Urllib2 移动用户代理
如果我用 Urllib2 打开一个网址,代码是这样的:
import urllib
import urllib2
url = 'http://www.bbc.co.uk'
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
values = {}
headers = { 'User-Agent' : user_agent }
data = urllib.urlencode(values)
req = urllib2.Request(url, data, headers)
response = urllib2.urlopen(req)
the_page = response.read()
一切都运行得很好。
但是我想要手机版本,所以我把用户代理设置成:
user_agent = 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_2_1 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8G4 Safari/6533.18.5'
这个是我用 iPhone 访问测试页面时看到的头信息。
然而,当我用这个用户代理运行上面的代码时,urllib 就出问题了,似乎陷入了一个无尽的 302 重定向循环,而我在 iPhone 上访问这个网站时并没有遇到这个问题。
urllib2 返回了很多调试信息,显示它在跟随很多 302 的重定向,最后:
urllib2.HTTPError: HTTP Error 301: The HTTP server returned a redirect error that would lead to an infinite loop.
The last 30x error message was:
Moved Permanently
如果有任何想法,我将非常感激。
1 个回答
1
你的问题是关于请求的重定向响应。
可以试试这个库,帮助你处理重定向的链接:
http://pypi.python.org/pypi/requests/0.7.3 或者 http://wwwsearch.sourceforge.net/mechanize/