1

POST、GET、およびその他のメソッドを使用し、ヘッダーとタイムアウトを指定して、HTTP および HTTPS リクエストを作成する必要があります。

インターネット上には多くの例があり、それらはすべて異なります。

import urllib.parse
import urllib.request

url = 'http://www.someserver.com/cgi-bin/register.cgi'
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
values = {'name' : 'Michael Foord',
          'location' : 'Northampton',
          'language' : 'Python' }
headers = { 'User-Agent' : user_agent }

data = urllib.parse.urlencode(values)
req = urllib.request.Request(url, data, headers)
response = urllib.request.urlopen(req)
the_page = response.read()

また

    fetcher = urllib2.build_opener()
    fetcher.addheaders.append(('Cookie', 'aaaa=%s' % aaaa))
    res = fetcher.open(settings.ABC_URL)

また

req = urllib2.Request(url=url)
req.add_header('X-Real-IP', request.META['REMOTE_ADDR'])
req.add_header('Cookie', request.META['HTTP_COOKIE'])
req.add_header('User-Agent', request.META['HTTP_USER_AGENT'])
resp = urllib2.urlopen(req).read()

また

handler = urllib.urlopen('http://...')
response = handler.read()

内部では、これらのメソッドのいくつかが同じメカニズムを使用していると思います。

httplib、を使用した他の例もありhttplib2ます。そして、urllib2が使用するのに適したライブラリであることを読みました。

どちらが好ましい方法ですか?それぞれにどのような長所と短所がありますか?

4

2 に答える 2

6

Python の URL/ダウンロード ライブラリの狂気を修正するrequests -module を試してください。

于 2012-10-23T08:11:10.173 に答える
2

Fabianに同意し、Requestsを使用する必要があります。

なんで?おそらく、作者自身がそれをここで最もよく要約しています:

KennethReitzの講演「PythonForHumans」- urllib2「これまでで最悪のAPI」である理由に関するセクション。

于 2012-10-23T08:26:19.170 に答える