如何使用BeautifulSoup解析文本文件中存储的多个URL并完成爬取
实现步骤
1. 准备URL存储文件
新建纯文本文件(比如命名为urls.txt),将300个URL按每行1个的格式存入。如果文件和Python脚本不在同一个文件夹,后续填写文件的绝对路径即可,否则直接写文件名就行。
2. 调整后可直接运行的代码
import requests from bs4 import BeautifulSoup # 读取URL列表文件 with open("urls.txt", "r", encoding="utf-8") as f: # 逐行读取,去除每行首尾的空白符(换行、空格等),过滤空行 url_list = [line.strip() for line in f if line.strip()] # 循环处理每个URL for url in url_list: try: # 请求超时设置为10秒,避免长时间卡住 source = requests.get(url, timeout=10).text soup = BeautifulSoup(source, features="html.parser") title = soup.find("meta", attrs={'itemprop': 'acquia_lift:content_keywords'}) # 输出时带上当前URL,方便对应结果 print(f"{url}: {title['content'] if title is not None else 'No meta title given'}") except Exception as e: # 捕获请求、解析等各类异常,避免单个URL失败导致整个脚本终止 print(f"{url}: 处理失败,错误信息:{str(e)}")
3. 核心逻辑说明
- 用
with open()的方式读取文本文件,会自动处理文件关闭,不需要手动操作 - 读取时通过列表推导式过滤掉空行和每行的换行符,避免无效URL导致请求失败
- 增加了异常捕获和超时设置,300个URL批量请求时,不会因为个别URL无法访问、页面解析出错导致整个脚本终止
- 输出结果附带对应URL,方便后续整理匹配每个站点的取值
内容的提问来源于stack exchange,提问作者JamesF90
相关产品推荐
相关产品推荐

