Python Urllib2.urlopen和请求冻结

Python Urllib2.urlopen和请求冻结,python,python-2.7,web,get,httprequest,Python,Python 2.7,Web,Get,Httprequest,编辑:我发现我犯了一个错误,因为错误的原因不是urllib而是nltk,nltk无法处理来自这个页面的长字符串。很抱歉这一次 我不知道为什么,但这与我在遇到特定url时使用Urllib2.urlopen或request无关 import requests r = requests.get('SomeURL') print html = r.text 这是它的行为。 1) 当我想到一个由200个URL组成的循环时,它每次都冻结在完全相同的URL上。如果我不终止程序,它会在这里停留数小时。 2)

编辑:我发现我犯了一个错误,因为错误的原因不是urllib而是nltk,nltk无法处理来自这个页面的长字符串。很抱歉这一次

我不知道为什么,但这与我在遇到特定url时使用Urllib2.urlopen或request无关

import requests
r = requests.get('SomeURL')
print html = r.text
这是它的行为。 1) 当我想到一个由200个URL组成的循环时,它每次都冻结在完全相同的URL上。如果我不终止程序,它会在这里停留数小时。 2) 当您尝试使用循环外的代码示例时,它会起作用。 3) 如果我只把这个url列入黑名单,它就会毫无问题地通过循环

它实际上不返回任何类型的错误代码,在循环外工作良好,并且设置了超时,但它什么也不做。它仍然无限期地挂着

因此,有没有其他方法可以在特定时间后强制停止http get请求,因为超时不起作用。除了urllib2和request之外,是否还有其他库可以执行此任务,并且遵循超时限制

for i in range(0,mincount):
    code(call the request for urlist[i]) 
    It always works but freezes only when I request this site. If i had 200 request to yahoo   for example it would work. But when i try go to this particular url i cannot.  
#end

编辑:这是一个循环的标准,没有太多的错误空间。

我认为这只是一个非常慢的页面;在我的系统上,加载大约需要9.7秒

如果您试图在一个短循环中运行它,它确实会冻结

你可以试试类似的东西

links = [
    'SomeURL',
    'http://www.google.com/'
]

for link in links:
    try:
        html = requests.get(link, timeout=2.).content
        print("Successfully loaded {}".format(link))
    except requests.Timeout:
        print("Timed out loading {}".format(link))
这给了我

Timed out loading SomeURL
Successfully loaded http://www.google.com/

尝试httplib2我正在尝试该模块。
timeout
选项有效。这可能是由于您的循环代码。您可以在代码中添加循环部分吗。您是否在该部分上使用
语句?httplib2在for循环中仍然不起作用。我甚至猜不出循环中的什么会导致仅针对一个URL的3种独立的http请求(urllib2、request和httplib2)不起作用。我尝试了几次循环,每次都在1000多秒后没有加载。python在ajax站点上有问题吗?实际上,我使用的for循环似乎只有某种缺陷。这个东西对我来说也能在10秒内加载,但当它在循环中时就不会了。有趣的是,yahoo.com和任何其他网站都是从循环中工作的,但这个网站不是。