python请求获取无效的URL点亮速度

问题描述 投票:0回答:1

我有一个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的响应?

  • 注1:我想避免使用grequests模块。
  • 注2:我不想使用多线程。
  • 我已阅读此https://stackoverflow.com/questions/17782142/why-doesnt-requests-get-return-what-is-the-default-timeout-that-requests-geta,但涉及超时设置。
performance url python-requests
1个回答
0
投票

虽然由于避免了多线程处理而可能无法为您提供闪电般的速度,但是您可以检查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

您可能想编写一个更具体的错误捕获逻辑,因为通常捕获所有错误都是不好的。

© www.soinside.com 2019 - 2024. All rights reserved.