如何批量检测TXT文件内URL的网页源码关键词并导出匹配结果
Python3 批量URL网页关键词检测实现方案
前置依赖
首先安装网络请求库:pip install requests
完整实现代码
import requests import os # 配置参数,可自行修改 KEYWORD = "Easter egg" # 要匹配的关键词 URL_FILE = "myurls.txt" # 存储URL的文件路径 OUTPUT_FILE = "match.txt" # 结果输出文件路径 REQUEST_TIMEOUT = 10 # 单个请求超时时间(秒) # 自定义请求头,避免被反爬拦截 HEADERS = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36" } def main(): # 先校验URL文件是否存在 if not os.path.exists(URL_FILE): print(f"错误:{URL_FILE} 文件不存在,请检查路径") return # 清空旧的输出文件 with open(OUTPUT_FILE, 'w', encoding='utf-8') as f: pass # 读取所有URL,自动跳过空行 with open(URL_FILE, 'r', encoding='utf-8') as f: urls = [line.strip() for line in f if line.strip()] for url in urls: # 自动补全URL协议头,处理没有http开头的不规范URL if not url.startswith(('http://', 'https://')): url = f"http://{url}" try: resp = requests.get(url, headers=HEADERS, timeout=REQUEST_TIMEOUT) # 自动识别网页编码,避免乱码导致匹配失败 resp.encoding = resp.apparent_encoding page_content = resp.text # 匹配关键词,如需忽略大小写可改为 if KEYWORD.lower() in page_content.lower(): if KEYWORD in page_content: result_line = f"{url} -> {KEYWORD}\n" print(f"匹配到结果:{result_line.strip()}") # 写入结果文件 with open(OUTPUT_FILE, 'a', encoding='utf-8') as f: f.write(result_line) except Exception as e: # 如需隐藏请求错误日志可注释下一行 print(f"请求{url}失败:{str(e)}") continue if __name__ == "__main__": main()
常见问题排查
如果脚本运行无结果,可按以下顺序排查:
- 检查
myurls.txt格式:确保每个URL单独占一行,没有多余的空行或特殊字符 - 确认URL可正常访问:手动复制URL到浏览器打开,确认网页能正常加载且包含目标关键词
- 调整匹配规则:如果需要忽略大小写匹配,可修改代码中匹配逻辑为大小写不敏感模式
- 更换User-Agent:部分网站反爬严格,可替换为你自己浏览器的UA标识
- 延长超时时间:部分境外网站加载速度慢,可适当调大
REQUEST_TIMEOUT参数值
使用说明
- 将
myurls.txt和脚本放在同一文件夹下 - 修改代码开头
KEYWORD参数为你需要检测的关键词 - 运行脚本,运行结束后同文件夹下生成的
match.txt就是最终结果
内容的提问来源于stack exchange,提问作者Noel Furky
相关产品推荐
相关产品推荐

