从文本文件读取多个URL并处理网页的脚本实现需求
批量处理URL并生成清理后内容文件的实现方案
我来给你写一个实用的Python脚本,完美匹配你描述的需求——从urloutshort.txt读取URL列表,处理每个URL生成合法文件名,用正则清理网页内容后写入对应文件。
完整脚本代码
import requests import re import urllib.parse from pathlib import Path # 定义你的清理正则(这里示例为去除HTML标签,你替换成自己的`clean_me`规则) CLEAN_REGEX = r'<.*?>' # 替换成实际需要的clean_me正则表达式 def process_url(url): # 1. 处理URL生成合法文件名 parsed_url = urllib.parse.urlparse(url.strip()) # 拼接域名和路径,替换非法字符为下划线 fname_parts = [parsed_url.netloc] + parsed_url.path.strip('/').split('/') fname = '_'.join(fname_parts).replace(':', '_').replace('?', '_').replace('&', '_') + '.txt' try: # 2. 获取网页内容 response = requests.get(url.strip(), timeout=10) response.raise_for_status() # 抛出HTTP请求错误 raw_content = response.text # 3. 用正则清理内容 cleaned_content = re.sub(CLEAN_REGEX, '', raw_content) # 4. 写入文件 with open(fname, 'w', encoding='utf-8') as f: f.write(cleaned_content) print(f"已成功处理并写入文件: {fname}") except requests.exceptions.RequestException as e: print(f"处理URL {url} 时请求失败: {str(e)}") except Exception as e: print(f"处理URL {url} 时发生未知错误: {str(e)}") if __name__ == "__main__": # 读取输入文件中的所有URL input_file = 'urloutshort.txt' if not Path(input_file).exists(): print(f"错误:输入文件 {input_file} 不存在!") exit(1) with open(input_file, 'r', encoding='utf-8') as f: urls = f.readlines() # 批量处理每个URL for url in urls: if url.strip(): # 跳过空行 process_url(url)
关键步骤说明
- 文件名生成:通过
urllib.parse.urlparse解析URL,提取域名和路径部分,把/、:、?等非法文件名字符替换为下划线,确保生成的文件名合法且有辨识度。 - 网页内容获取:使用
requests库发送HTTP请求,添加超时和错误捕获,避免单个URL失败导致整个脚本崩溃。 - 内容清理:你只需要把
CLEAN_REGEX替换成你实际的clean_me正则规则就行——比如如果是要删除特定关键词、注释或者其他内容,直接修改正则表达式即可。 - 异常处理:针对网络请求错误、文件读写错误等情况做了捕获,脚本运行更稳定。
使用注意事项
- 先安装依赖库:
pip install requests - 把你的
clean_me正则表达式替换到CLEAN_REGEX变量处 - 确保
urloutshort.txt和脚本在同一目录下,或者修改脚本中input_file的路径
内容的提问来源于stack exchange,提问作者RJS
相关产品推荐
相关产品推荐

