如何判断多个url的状态 即是否能成功访问?
阅读原文时间:2023年07月09日阅读:1

假设我们所有的url在excel种
我们可以用loadwork 这个库 遍历所有的url 放入 列表
再通过request 或者 httpx 来判断 这个网址status_code 进而放入mongo种

import httpx
from openpyxl import load_workbook
from pymongo import MongoClient

# 得到对象
wb = load_workbook('D:\kyls_working\ScrapyCurrencyCrawl\ScrapyCurrencyCrawl\excelWebSite\总表.xlsx')

# 得到sheet页的对象
sheet = wb['可以访问']
# url列表
url_list = []
# 循环两列所有对象并生成 图片名

# 得到一个mongo客户端对象
client = MongoClient("mongodb://localhost:27017/")
# 先执行删除
client.drop_database("UrlStatus")
# 再创建数据库
db = client.UrlStatus
# 创建集合
coll = db.status

# 遍历第二行所有数据 并生成url 的值
for col in sheet.iter_cols(min_col=7, max_col=7, min_row=2):
    for cell in col:
        url = cell.value
        # 将遍历的对象放入列表中
        url_list.append(url)

# 遍历url 是否能够成功访问
for url in url_list:
    try:
        resp = httpx.get(url)
        # 如果能成功访问
        if resp.status_code == 200:
            print("success_url", url)
            rs = coll.insert_one({"success_url": url})
        # 网址为404的
        elif resp.status_code == 404:
            print("404", url)
            rs = coll.insert_one({"404_url": url})
        # 为其他状态的网址
        else:
            print('other', url)
            rs = coll.insert_one({"other": url})
    # 超时网址
    except TimeoutError as e:
        print(e)
        rs = coll.insert_one({"问题网址": url})

代码如上

也可以自行改正 。