批量监测网站url工具及源码,自动获取状态码及标题

时间:2023-11-07 20:30:32作者:技术经验网浏览:554

image.png

txt内有很多url(一行为一条),读取txt内的url,批量监控url返回代码,如果为200,则获取url标题,将检测的时间、返回的状态码、标题写入到jieguo.xls中,每12小时执行一次。

首先,需要安装所需要的依赖库

代码如下:

pip install apscheduler

完整代码如下:

import requests
from bs4 import BeautifulSoup
import pandas as pd
from apscheduler.schedulers.blocking import BlockingScheduler
# 定义一个函数,用于读取txt文件中的URL,并监控它们的HTTP状态码和标题
def monitor_urls():
results = []  # 用于存储每个URL的监控结果
with open('urls.txt', 'r') as file:  # 打开文件
for url in file:  # 遍历文件中的每一行(即每一个URL)
url = url.strip()  # 去除URL两端的空白字符
try:
response = requests.get(url, timeout=10)  # 发送HTTP请求
status_code = response.status_code  # 获取响应的状态码
if status_code == 200:  # 如果状态码为200
soup = BeautifulSoup(response.content, 'html.parser')  # 解析HTML内容
title = soup.title.string if soup.title else 'No Title Found'  # 获取页面标题
else:
title = 'Status not 200'  # 状态码不是200时的标题
except requests.RequestException as e:  # 捕获请求异常
status_code = 'Error'  # 发生异常时的状态码
title = str(e)  # 异常信息作为标题
results.append({
'Time': pd.Timestamp.now(),  # 检测的时间
'URL': url,  # URL
'Status Code': status_code,  # 返回的状态码
'Title': title  # 网页标题
})
# 将结果写入到Excel文件中
df = pd.DataFrame(results)
df.to_excel('jieguo.xls', index=False)
# 创建一个调度器实例
scheduler = BlockingScheduler()
# 添加任务,每12小时执行一次monitor_urls函数
scheduler.add_job(monitor_urls, 'interval', hours=12)
# 启动调度器
scheduler.start()


文章评论