2014-09-12 5 views
2

빙 검색 엔진을 사용하여 비디오를 검색하려고했습니다. 하지만 시도 모든 시간은 내가 얻을 오류 HTTPError : HTTPError 403 : 표시되는 오류가Bing을 사용하여 비디오를 검색하는 Python 프로그램

import urllib 
import urllib2 
import json 

def main(): 
    query = "'pyscripter'" 
    print bing_search(query, 'Video') 

def bing_search(query, search_type): 
    #search_type: Web, Image, News, Video 
    key= 'LsE7jElMmTDfbrnCEmrCmCEBbaPxMG5BvKr9CsfmSNS' 
    query = urllib.quote(query) 
    #create credential for authentication 
    user_agent = 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; FDM; .NET CLR 2.0.50727; InfoPath.2; .NET CLR 1.1.4322)' 
    credentials = (':%s' % key).encode('base64')[:-1] 
    auth = 'Basic %s' % credentials 
    url = 'https://api.datamarket.azure.com/Data.ashx/Bing/Search/'+search_type+'?Query=%27'+query+'%27&$top=5&$format=json' 
    request = urllib2.Request(url) 
    request.add_header('Authorization', auth) 
    request.add_header('User-Agent', user_agent) 
    request_opener = urllib2.build_opener() 
    response = request_opener.open(request) 
    response_data = response.read() 
    json_result = json.loads(response_data) 
    result_list = json_result['d']['results'] 
    print result_list 
    return result_list 

if __name__ == '__main__': 
    main() 

금지 :

Traceback (most recent call last): 
File "<module1>", line 30, in <module> 
File "<module1>", line 7, in main 
File "<module1>", line 22, in bing_search 
File "C:\Python27\lib\urllib2.py", line 410, in open 
    response = meth(req, response) 
File "C:\Python27\lib\urllib2.py", line 523, in http_response 
'http', request, response, code, msg, hdrs) 
File "C:\Python27\lib\urllib2.py", line 448, in error 
    return self._call_chain(*args) 
File "C:\Python27\lib\urllib2.py", line 382, in _call_chain 
result = func(*args) 
File "C:\Python27\lib\urllib2.py", line 531, in http_error_default 
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp) 
HTTPError: HTTP Error 403: Forbidden 

나는 괜찮 았는데 YouTube 검색 API와 협력이 시도하기 전에. 그러나 유일한 문제는 YouTube 데이터베이스에있는 동영상에만 국한되어 있다는 것입니다. 내가 원하는 것은 인터넷에있는 키워드와 관련된 모든 동영상의 URL 목록입니다. 그래서 Bing 검색 엔진으로 시작했습니다. 이것에 관한 도움을 주시면 감사하겠습니다. 웹 서버는 웹 페이지 또는 자원에 대한 클라이언트의 요청에 대한 응답으로 403 금지 HTTP 상태 코드를 반환 할 수 있습니다

내가 문제를 저장했다

+0

"빙 검색"가입 활성화 :'urllib2.HTTPError에게 : HTTP 오류 401 : 제공 한 인증 유형이 지원되지 않습니다. 기본 및 OAuth 만 지원됨' – nofinator

+0

Google 크롬을 사용하고 네트워크 트래픽을 cURL 명령으로 받아서 시험해 보시기 바랍니다. 그런 다음 Python Request를 사용하면 더 쉽게 사용할 수 있습니다. – Lovato

+0

@Lovato 나는 cURL 사용에 대한 지식이 없습니다. 이것은 [이 프로그램]의 파생물이었다. (http://xiaoyao-web-hacks.blogspot.de/2012/09/use-python-to-access-windows-azure-bing.html) –

답변

0

, 서버에 도달 할 수 있음을 나타냅니다하고 요청을 이해하기 , 그러나 더 이상의 행동을 취하지 않는다. 상태 코드 403 응답은 클라이언트가 요청한 리소스에 대한 액세스를 거부하도록 웹 서버를 구성한 결과입니다. 내 경우에는

, 나는 활성화 "빙 검색"가입, 그래서 " https://datamarket.azure.com/dataset/bing/search"으로 이동하는 것을 잊었다 나는이 코드를 실행 대신이 오류가 발생했습니다