【发布时间】:2011-08-29 00:17:48
【问题描述】:
我正在尝试从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) 不起作用?
感谢您的帮助
【问题讨论】:
-
你不认为我们知道当你运行该代码时会发生什么对我们有帮助吗?它与您的预期有何不同?你得到什么错误?
-
我也超时了。 WGET 虽然有效。所以这不是用户代理的问题,只是尝试使用自定义 urlopenener,它也不起作用。
-
恭喜,您发现了一个非常奇怪的问题。在 python 2.7 上,它在调用
self._sock.recv时永远挂在 socket.py 第 447 行,它是 python 内置的,没有任何关联的 python 源代码。这比 python 和 urllib2 更深入。 -
@Jathanism:不,wget和curl与Javascript无关,加载页面就好了。
-
它不会永远挂起 - 最终我在
URLError中得到“由对等方重置连接”。不过很奇怪——我也试过从我的浏览器中借用 UA 字符串。 Python 3.2 也好不到哪里去。有人可能想看看为 Python 打开一个错误。