Urllib2 移动用户代理

0 投票
1 回答
1773 浏览
提问于 2025-04-17 05:07

如果我用 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/

撰写回答