如何用Beautiful Soup提取网页中Pros板块内容并保存到文件
提取Capterra评论中的Pros板块内容
你需要调整代码定位评论里的**Pros:**板块,而非提取所有<p>标签文本。Capterra的评论结构中,Pros内容可通过匹配固定文本或定位专属容器来精准提取,以下是修改后的实现:
import requests from bs4 import BeautifulSoup # 模拟浏览器请求头,规避网站反爬拦截 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36' } # 请求目标页面并检查请求状态 res = requests.get('https://www.capterra.ca/reviews/203084/voip-ms', headers=headers) res.raise_for_status() parseSoup = BeautifulSoup(res.text, 'html.parser') # 定位所有包含"Pros:"文本的段落 pros_sections = parseSoup.find_all(lambda tag: tag.name == 'p' and 'Pros:' in tag.get_text()) # 提取内容并写入文件 with open("pros.txt", 'w', encoding='utf-8') as file: for section in pros_sections: # 截取"Pros:"之后的内容,清理多余空格 pros_content = section.get_text().split('Pros:', 1)[1].strip() file.write(f"{pros_content}\n\n") # 每个Pros内容间空行分隔
关键说明:
- 请求头设置:添加
User-Agent模拟真实浏览器访问,避免被网站反爬机制拦截。 - 精准定位:通过lambda表达式筛选包含"Pros:"的
<p>标签,确保只获取目标板块内容。 - 文本处理:用
split('Pros:', 1)分割文本,只保留标签内"Pros:"之后的有效内容,同时去除首尾空格优化格式。 - 编码保障:写入文件时指定
utf-8编码,避免特殊字符或中文出现乱码。
如果后续网站结构更新,可通过浏览器开发者工具(F12)查看Pros板块的最新HTML结构,调整定位规则(比如改用类名查找:parseSoup.find_all('div', class_='review-pros'))。
内容的提问来源于stack exchange,提问作者ash
相关产品推荐
相关产品推荐

