1

それで、urllib2/BeautifulSoup を使用してウィキペディアのページからデータを読み込もうとしています。このコードを端末にコピーしました:

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) 

それは正常に動作します。ただし、代わりにこの呼び出しを行うと (キーワード引数を削除します):

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

エラーが発生します:

 TypeError: must be string or buffer, not dict

なぜこれが起こるのですか?関数呼び出しでは、キーワード引数はオプションだと思いました。助けてくれてありがとう!

4

3 に答える 3

2

urllib2 の request 関数の構造は次のとおりです。

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

Pythonで関数を呼び出すときは、引数の名前を指定する必要があります。urllib2.request(headers = hdrs, url = my_url)

または、関数定義で指定された順序で引数を指定する必要があります。

したがって、2 番目の関数では、python はデータ パラメータの値として hdrs を指定していると想定するため、データ型が一致しません。

于 2013-08-14T07:36:02.370 に答える