我的Python程序应该(或已经)将请求发送到网站列表以测试它们是否存在。然后,应将结果(无论是否存在)保存在列表中或之后保存在文件中。到目前为止,它运行良好。但是我总是收到一些网站的错误消息,看起来像这样:
requests.exceptions.ReadTimeout: HTTPConnectionPool(host='www.oderwald.de', port=80): Read timed out. (read timeout=60)
我认为问题在于网站只是不发送回复,而是不断询问程序。到目前为止,我的程序如下所示:
import requests
from requests.exceptions import ConnectionError
with open("list_website.txt") as infile:
list = [list.strip() for list in infile]
list_ge = []
list_ne = []
x=0
n=0
g=0
i=0
for i in range(len(list)):
try:
request = requests.get('http://www.' + list[i] + ".de")
except ConnectionError:
list_ne.append(list[i])
g=+1
file = open('not_working.txt','a')
file.write(list[i]+ "\n")
else:
list_ge.append(list[i])
n=+1
file2 = open('works.txt','a')
file2.write(liste[i] + "\n")
print(list_ge)
print(list_ne)
有谁知道我该如何解决这个问题?提前谢谢了。
编辑:
要使异常提前返回(不是默认的60秒),请更改行
request = requests.get('http://www.' + list[i] + ".de")
至
request = requests.get('http://www.' + list[i] + ".de", timeout = 2)
,其中2是您最多愿意等待的秒数。
最初的帖子如下:
您尝试访问的网站(www.oderwald.de)在指定的时间(您的情况下为60秒)内没有响应,因此,这种现象是可以预期的。由于这只是一个例外,因此您可以使用except
语句来处理它。见下文:
try:
request = requests.get('http://www.' + list[i] + ".de")
except requests.exceptions.ReadTimeout:
print("Read timeout occurred")
# The website exists but does not respond.
# Decide to which category you assign it.
还list()
指的是内置的Python函数,您将在以下行中对其进行覆盖:list = [list.strip() for list in infile]
。请改用另一个变量名。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句