我已经使用这个状态检查器好几个月了。工作完美无缺,虽然我很想在状态200被发现时得到一条消息,如果没有,它会自动循环并从头开始(考虑实现电报/不和谐消息)。如果是这样的话,我甚至不需要一个完整的url列表作为文件,只需要一个带有url状态200的文件。
有什么办法吗?
import requests
import csv
import time
import urllib3
urllib3.disable_warnings()
SLEEP = 0.3
url_list = []
url_statuscodes = []
url_statuscodes.append(["url","status_code"])
def getStatuscode(url):
try:
r = requests.head(url,verify=False,timeout=5) # it is faster to only request the header
return (r.status_code)
except:
return -1
with open('urls.csv', newline='') as f:
reader = csv.reader(f)
for row in reader:
url_list.append(row[0])
for url in url_list:
print(url)
check = [url,getStatuscode(url)]
time.sleep(SLEEP)
url_statuscodes.append(check)
with open("urls_withStatusCode.csv", "w", newline="") as f:
writer = csv.writer(f)
writer.writerows(url_statuscodes)
我试着检查200,但它没有真正工作。
Response.status_code
属性是int
,所以正常的相等性检查应该工作:
if r.status_code == 200:
pass
如果您希望接受任何低于400的状态码,则可以使用Response.ok
代替。