批量监测网站url工具及源码,自动获取状态码及标题
时间:2023-11-07 20:30:32作者:技术经验网浏览:554
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()