Python是否会跟随重定向并下载页面?
Python是否会跟随重定向并下载页面?
我有以下的Python脚本,它运行得非常好。
import urllib2 url = 'http://abc.com' # 在这里写入url usock = urllib2.urlopen(url) data = usock.read() usock.close() print data
然而,有些我提供的URL可能会重定向2次或更多次。在加载数据之前,我该如何让Python等待重定向完成呢?
例如,当我使用上面的代码与以下链接一起使用时:
http://www.google.com/search?hl=en&q=KEYWORD&btnI=1
这相当于在Google搜索中点击“幸运之星”按钮,我会得到以下错误信息:
>>> url = 'http://www.google.com/search?hl=en&q=KEYWORD&btnI=1' >>> usick = urllib2.urlopen(url) Traceback (most recent call last): File "", line 1, in File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 126, in urlopen return _opener.open(url, data, timeout) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 400, in open response = meth(req, response) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 513, in http_response 'http', request, response, code, msg, hdrs) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 438, in error return self._call_chain(*args) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 372, in _call_chain result = func(*args) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 521, in http_error_default raise HTTPError(req.get_full_url(), code, msg, hdrs, fp) urllib2.HTTPError: HTTP Error 403: Forbidden >>>
我尝试了`(url, data, timeout)`,但是我不确定应该放什么值。
编辑:
实际上,我发现如果不进行重定向,只使用第一个链接的头部,我可以获取下一个重定向的位置并将其用作我的最终链接。