2024-05-14 18:59:07 发布
网友
希望这是一个很简单的问题,但它让我发疯。 我在Ubuntu12.10服务器的开箱即用安装中使用Python2.7.3。我一直在放大这个问题,直到找到这个片段:
import urllib2 x=urllib2.urlopen("http://casacinema.eu/movie-film-Matrix+trilogy+123+streaming-6165.html", timeout=5)
它只是永远挂着,从不超时。 我显然做错了什么。有人能帮忙吗? 非常感谢!
马特奥
看起来您遇到了代理问题。关于如何解决这个问题,这里有一个很好的解释: Trying to access the Internet using urllib2 in Python。
我已经在我的ubuntu上用python 2.7.3执行了你的代码,没有看到任何错误。
另外,考虑使用requests:
import requests response = requests.get("http://casacinema.eu/movie-film-Matrix+trilogy+123+streaming-6165.html", timeout=5) print response.status_code
另见:
最初的海报上说,他们不明白为什么会挂起来,但他们也希望有一种方法来防止urllib.request.urlopen被挂起来。我不能说怎样才能不让它挂起来,但如果它能帮助别人,这就是为什么它能挂起来。
urllib.request.urlopen
Python-urllib/3.6客户端很挑剔。例如,它期望服务器返回HTTP/1.1 200 OK,而不是HTTP 200 OK。它还希望服务器在头文件中发送connection: close时关闭连接。
Python-urllib/3.6
HTTP/1.1 200 OK
HTTP 200 OK
connection: close
诊断此问题的最佳方法是获取服务器响应的原始输出,并将其与您知道有效的另一个服务器响应进行比较。然后,如果必须创建一个服务器并操纵响应,以确定导致差异的确切原因。也许,这至少可以导致服务器上的更改,并允许它不挂起。
看起来您遇到了代理问题。关于如何解决这个问题,这里有一个很好的解释: Trying to access the Internet using urllib2 in Python。
我已经在我的ubuntu上用python 2.7.3执行了你的代码,没有看到任何错误。
另外,考虑使用requests:
另见:
最初的海报上说,他们不明白为什么会挂起来,但他们也希望有一种方法来防止
urllib.request.urlopen
被挂起来。我不能说怎样才能不让它挂起来,但如果它能帮助别人,这就是为什么它能挂起来。Python-urllib/3.6
客户端很挑剔。例如,它期望服务器返回HTTP/1.1 200 OK
,而不是HTTP 200 OK
。它还希望服务器在头文件中发送connection: close
时关闭连接。诊断此问题的最佳方法是获取服务器响应的原始输出,并将其与您知道有效的另一个服务器响应进行比较。然后,如果必须创建一个服务器并操纵响应,以确定导致差异的确切原因。也许,这至少可以导致服务器上的更改,并允许它不挂起。
相关问题 更多 >
编程相关推荐