python批量获取网站状态码

422次阅读
没有评论

共计 1180 个字符,预计需要花费 3 分钟才能阅读完成。

需求背景,因为我们有几千个二级域名站点,需要检测网站是否还能正常访问,
所以使用 python 进行了一次性的检测!
注意:
1,检测的结果的快慢以及准确性以电脑性能和网络好坏为标准。
准备网站的 url,文本文件 getbojurl_file.txt
格式内容为 (一行一个项目) 如
项目 网站 url

搜索引擎 A    https://www.baidu.com
搜索引擎 b    https://www.bing.com

检测代码如下
代码说明需要自己安装多线程 threading 的包 requests 的包
output/getbojurl_file.txt 为检测的 url 列表
output/getbojurlendlock_file.txt 为检测的输出结果

# -*- coding: utf-8 -*-
import threading
import requests
import time

def check_url(url, name, lock):
    try:
        response = requests.get(url, timeout=20)
        status_code = response.status_code
        if status_code >= 400:
            print(name, url, status_code)
            with lock:
                with open('output/getbojurlendlock_file.txt', 'a+', encoding='utf-8') as f:
                    f.write('{}\t{}\t 状态码:{}\n'.format(name, url, status_code))
                    f.write('')
    except requests.exceptions.RequestException as e:
        print(name, url, e)
        with lock:
            with open('output/getbojurlendlock_file.txt', 'a+', encoding='utf-8') as f:
                f.write('{}\t{}\t 异常状态{}\n'.format(name, url, e))
                f.write('')

with open('output/getbojurl_file.txt', 'r' ,encoding='utf-8') as file:
    lines = file.readlines()
    threads = []
    lock = threading.Lock()
    for line in lines:
        time.sleep(0.5)
        values = line.strip().split()
        url = values[1]
        name = values[0]
        t = threading.Thread(target=check_url, args=(url, name, lock))
        threads.append(t)
        t.start()

    for t in threads:
        t.join()

print('所有 URL 检测结束!')

正文完
 0
yx
版权声明:本站原创文章,由 yx 于2023-06-12发表,共计1180字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
验证码