我正在尝试从 http://m.finnkino.fi/events/now_showing 获取一些数据,但目前我失败得很厉害,因为我什至无法用 python 加载页面源。
目前我正在使用以下代码:
req = urllib2.urlopen(URL,None,2.5)
page = req.read()
print page
这是超时错误的回溯:
Traceback (most recent call last):
File "user/src/finnkinoParser.py", line 26, in <module>
main()
File "user/src/finnkinoParser.py", line 13, in main
getNowPlayingMovies()
File "user/src/finnkinoParser.py", line 17, in getNowPlayingMovies
req = urllib2.urlopen(baseURL,None,2.5)
File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/urllib2.py", line 124, in urlopen
return _opener.open(url, data, timeout)
File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/urllib2.py", line 383, in open
response = self._open(req, data)
File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/urllib2.py", line 401, in _open
'_open', req)
File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/urllib2.py", line 361, in _call_chain
result = func(*args)
File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/urllib2.py", line 1130, in http_open
return self.do_open(httplib.HTTPConnection, req)
File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/urllib2.py", line 1105, in do_open
raise URLError(err)
urllib2.URLError: <urlopen error timed out>
如果我用我的浏览器浏览到 url,它工作正常。那么有人可以告诉我是什么使该站点如此不同,因此 urllib2 无法加载该页面。我想这与针对移动用户的网站有关。使用“常规”站点 urllib2 工作正常。是否有任何其他类型的网站无法使用基本的 urlopen(URL) ?
感谢帮助
最佳答案
以下代码段工作正常。
import httplib
headers = {"User-Agent": "Mozilla/5.0"}
conn = httplib.HTTPConnection("m.finnkino.fi")
conn.request("GET", "/events/now_showing", "", headers)
response = conn.getresponse()
print response.status, response.reason
data = response.read()
print data
conn.close()
似乎他们的服务器已经验证了几个请求变量。经过多次测试,得出以下结论:
在 urllib2 中,HTTPHandler 中的 Connection 属性默认设置为关闭(urllib2.py 中的 L1127)。您可以使用 urlgrabber 或其他支持 HTTP/1.1 和 keep-alive 的 HTTP 处理程序。
关于python - urllib2 加载移动站点的问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6061306/