2013-08-14 4 views
1

그래서 urllib2/BeautifulSoup를 사용하여 위키 백과 페이지에서 데이터를 읽으려고합니다. 이 코드를 터미널에 복사했습니다.Python의 키워드 인수

import urllib2 

hdrs = { 'User-Agent': "Mozilla/5.0 (X11; U; Linux i686) Gecko/20071127 Firefox/2.0.0.11" } 
req = urllib2.Request("http://en.wikipedia.org/wiki/List_of_United_States_mobile_phone_companies" , headers = hdrs) 
fd = urllib2.urlopen(req) 

잘 작동합니다. 내가 대신 전화 (제거 키워드 인수) 할 때, :

TypeError: must be string or buffer, not dict 

왜 이런 일이 않습니다

req = urllib2.Request("http://en.wikipedia.org/wiki/List_of_United_States_mobile_phone_companies" , hdrs) 

를 오류가 발생합니다? 함수 호출에서 키워드 인수가 선택적이라고 생각했습니다. 도와 주셔서 감사합니다! 문서에서

답변

2

:이 작업을 수행 할 수 있습니다

urllib2.Request(url[, data][, headers][, origin_req_host][, unverifiable]) 

:

req = urllib2.Request("<url>", None, hdrs) 
+1

'데이터'의 기본 값이 참으로 '없음'인 경우에만 (실제로). (단지이 문제가 아닌이 문제에 대해 사람들이 민감하게 반응하게 만들려고합니다.) – glglgl

5

urllib2.Request의 두 번째 매개 변수는 데이터, 헤더 없습니다.

class urllib2.Request(url[, data][, headers][, origin_req_host][, unverifiable]) 

데이터를 지정하지 않고 헤더를 지정하려면 키워드 인수 양식을 사용해야합니다. urllib2가의 요청 기능의

+0

감사합니다. 문서를 해석하는 방법에 대해 확신하지 못했습니다. [, 매개 변수]는 정확히 무엇을 의미합니까? (즉,이 목록 형식과 같은 이유는 무엇입니까?) – MEric

+0

@MEric'[, parameter]'는 :'parameter' 옵션입니다. – falsetru

2

구조는 다음과 같습니다 당신은 파이썬에서 함수를 호출 할 때

urllib2.Request(url[, data][, headers][, origin_req_host][, unverifiable]) 

하면, 예를 들어 인수의 이름을 지정하거나 필요 urllib2.request(headers = hdrs, url = my_url)

또는 함수 정의에 주어진 순서대로 인수를 제공해야합니다.

따라서 두 번째 함수에서 python은 hdrs를 데이터 매개 변수의 값으로, 따라서 데이터 유형이 일치하지 않는다고 가정합니다.

관련 문제