我有一个10 ^ 6的URL列表,我想对照状态码进行检查。问题是在指定了超时的情况下,requests.get对我来说太慢了,有时我甚至无法确定url是否有效还是1秒钟的超时(比如说服务器响应很慢)。
所以,我目前在这样做:
import request
url = "https://dupa.ucho.elo.8"
r = requests.get(url, headers={'Connection': 'close'}, timeout=1)
如何在不设置超时的情况下快速检查url是否有效并立即返回无效URL的响应?
https://stackoverflow.com/questions/17782142/why-doesnt-requests-get-return-what-is-the-default-timeout-that-requests-geta
,但涉及超时设置。虽然由于避免了多线程处理而可能无法为您提供闪电般的速度,但是您可以检查URL的响应是否包含要查看的内容(200状态代码),然后立即终止。
import requests
import sys
url_list = ['http://google12121.com/','https://google.com/']
for url in url_list:
try:
response = requests.get(url)
if "200" in str(response.status_code):
print("Yes")
else:
print("No")
except:
print("Error: "+str(sys.exc_info()[0]))
continue
您可能想编写一个更具体的错误捕获逻辑,因为通常捕获所有错误都是不好的。