豆瓣电影评论爬虫代码示例:抓取评论人姓名、时间和内容

本代码示例展示如何使用 Python 的 requestsBeautifulSoup 库,从豆瓣电影评论页面抓取评论人姓名、评论时间和评论内容,并以 JSON 格式保存结果。

步骤:

  1. 分析网页结构: 使用浏览器开发工具(通常是 F12)分析网页结构,找到需要抓取的信息所在的标签和属性。
  2. 编写爬虫代码: 使用 requests 库发送 HTTP 请求获取网页内容,并使用 BeautifulSoup 库解析 HTML 代码,提取目标数据。
  3. 存储数据: 将抓取到的数据存储为 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 文件。')

代码说明:

  1. 导入库: 导入 requestsBeautifulSoupjson 库。
  2. 设置请求头: 定义请求头,模拟浏览器访问,避免被网站识别为爬虫。
  3. 定义目标 URL 和页数: 定义需要抓取的豆瓣电影评论页面的 URL 和需要抓取的页数。
  4. 循环抓取数据: 使用 for 循环,遍历每一页,发送 HTTP 请求获取网页内容,并使用 BeautifulSoup 解析 HTML 代码。
  5. 提取目标数据: 使用 find_all 方法找到所有包含评论的 div 标签,然后遍历每个评论,使用 find 方法找到评论人姓名、时间和内容的标签,并提取文本内容。
  6. 存储数据: 将提取到的数据存储到列表 result 中。
  7. 保存数据: 使用 json.dump 方法将 result 列表保存到 result.json 文件中。

注意:

  • 该代码示例仅用于学习和研究目的,请勿用于商业用途。
  • 爬取数据时请遵守网站的robots.txt协议,避免对网站造成负荷。
  • 爬取数据时请注意个人信息安全,不要爬取包含敏感信息的页面。
  • 随着网站结构的调整,代码可能需要进行修改。

建议:

  • 使用更健壮的爬虫框架,例如 scrapyBeautifulSoup4,可以更方便地处理复杂的网页结构和数据提取。
  • 使用代理服务器,避免 IP 地址被封禁。
  • 使用数据库保存数据,可以更方便地管理和查询数据。

希望本代码示例能够帮助您学习如何使用 Python 进行网页数据抓取。如果您有任何疑问,请随时提问。


原文地址: https://www.cveoy.top/t/topic/oA7h 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录