Urllib2.urlopen和请求冻结

2024-05-05 11:40:57 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我不知道为什么,但不管我使用Urllib2.urlopen还是在遇到特定的url时请求。在

import requests
r = requests.get('SomeURL')
print html = r.text

这是它的行为。 1) 当我去想一个循环的200个网址,它每次冻结在完全相同的网址。如果我不终止程序,它会在这里呆上几个小时。 2) 当你尝试在循环外只使用代码的示例时,它会起作用。 3) 如果我只是把这个网址列入黑名单,它就会毫无问题地通过循环。在

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

那么,是否有其他方法可以在一段时间后强制停止httpget请求,因为超时不起作用。除了urllib2和request之外,是否还有其他库可以完成这项工作,并且遵循超时限制?在

^{pr2}$

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


Tags: 字符串importurl编辑get错误原因页面
1条回答
网友
1楼 · 发布于 2024-05-05 11:40:57

我认为这只是一个非常慢的页面;在我的系统中,加载大约需要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))

这给了我

^{pr2}$

相关问题 更多 >