在urllib2.urlopen中更改用户代理
我怎么才能用一个不同于默认的用户代理来下载网页,使用的是 urllib2.urlopen
呢?
urllib2.urlopen
在 Python 3.x 中是 不可用的; 在 3.x 中可以用 urllib.request.urlopen
来代替。想了解如何在 Python 3 中通过标准库的 HTTP 功能来设置用户代理,可以查看 如何在 Python 3 中更改用户代理。
9 个回答
105
headers = { 'User-Agent' : 'Mozilla/5.0' }
req = urllib2.Request('www.example.com', None, headers)
html = urllib2.urlopen(req).read()
req = urllib2.Request('www.example.com', headers={ 'User-Agent': 'Mozilla/5.0' })
html = urllib2.urlopen(req).read()
或者,稍微简短一点:
61
设置用户代理,这是大家都喜欢的 Dive Into Python 中的内容。
简单来说:你可以用 Request.add_header 来做到这一点。
在创建请求的时候,你也可以把头信息作为一个字典传进去,文档中有说明:
headers 应该是一个字典,系统会把它当作调用
add_header()
时每个键值对的参数来处理。这通常用来“伪装”User-Agent
头信息,浏览器用这个来标识自己——有些HTTP服务器只允许来自常见浏览器的请求,而不允许脚本的请求。例如,Mozilla Firefox 可能会自我标识为"Mozilla/5.0 (X11; U; Linux i686) Gecko/20071127 Firefox/2.0.0.11"
,而urllib2
的默认用户代理字符串是"Python-urllib/2.6"
(在Python 2.6上)。