豆瓣电影评论爬虫代码示例:抓取评论人姓名、时间和内容
豆瓣电影评论爬虫代码示例:抓取评论人姓名、时间和内容
本代码示例展示如何使用 Python 的 requests 和 BeautifulSoup 库,从豆瓣电影评论页面抓取评论人姓名、评论时间和评论内容,并以 JSON 格式保存结果。
步骤:
- 分析网页结构: 使用浏览器开发工具(通常是 F12)分析网页结构,找到需要抓取的信息所在的标签和属性。
- 编写爬虫代码: 使用
requests库发送 HTTP 请求获取网页内容,并使用BeautifulSoup库解析 HTML 代码,提取目标数据。 - 存储数据: 将抓取到的数据存储为 JSON 格式文件。
代码示例:
import requests
from bs4 import BeautifulSoup
import json
# 定义请求头,模拟浏览器访问
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
# 定义需要抓取的网页地址及参数
url = 'https://movie.douban.com/subject/25868125/comments?start={}&limit=20&status=P&sort=new_score'
# 定义需要抓取的页数
page_num = 3
# 定义结果列表
result = []
# 循环抓取每一页的数据
for i in range(page_num):
# 构造请求地址
req_url = url.format(i * 20)
# 发送请求
res = requests.get(req_url, headers=headers)
# 解析网页内容
soup = BeautifulSoup(res.text, 'html.parser')
# 提取评论部分内容
comments = soup.find_all('div', {'class': 'comment-item'})
# 循环处理每个评论部分
for comment in comments:
# 提取评论人名称
name = comment.find('span', {'class': 'comment-info'}).a.text.strip()
# 提取评论时间
time = comment.find('span', {'class': 'comment-time'}).text.strip()
# 提取评论内容
content = comment.find('span', {'class': 'short'}).text.strip()
# 将结果添加到列表中
result.append({'name': name, 'time': time, 'content': content})
# 将结果保存为 JSON 文件
with open('result.json', 'w', encoding='utf-8') as f:
json.dump(result, f, ensure_ascii=False, indent=4)
print('数据已保存到 result.json 文件。')
代码说明:
- 导入库: 导入
requests、BeautifulSoup和json库。 - 设置请求头: 定义请求头,模拟浏览器访问,避免被网站识别为爬虫。
- 定义目标 URL 和页数: 定义需要抓取的豆瓣电影评论页面的 URL 和需要抓取的页数。
- 循环抓取数据: 使用
for循环,遍历每一页,发送 HTTP 请求获取网页内容,并使用BeautifulSoup解析 HTML 代码。 - 提取目标数据: 使用
find_all方法找到所有包含评论的div标签,然后遍历每个评论,使用find方法找到评论人姓名、时间和内容的标签,并提取文本内容。 - 存储数据: 将提取到的数据存储到列表
result中。 - 保存数据: 使用
json.dump方法将result列表保存到result.json文件中。
注意:
- 该代码示例仅用于学习和研究目的,请勿用于商业用途。
- 爬取数据时请遵守网站的robots.txt协议,避免对网站造成负荷。
- 爬取数据时请注意个人信息安全,不要爬取包含敏感信息的页面。
- 随着网站结构的调整,代码可能需要进行修改。
建议:
- 使用更健壮的爬虫框架,例如
scrapy或BeautifulSoup4,可以更方便地处理复杂的网页结构和数据提取。 - 使用代理服务器,避免 IP 地址被封禁。
- 使用数据库保存数据,可以更方便地管理和查询数据。
希望本代码示例能够帮助您学习如何使用 Python 进行网页数据抓取。如果您有任何疑问,请随时提问。
原文地址: https://www.cveoy.top/t/topic/oA7h 著作权归作者所有。请勿转载和采集!