使用 Python 爬取豆瓣电影《穿靴子的猫2》影评数据:反爬虫技巧与代码示例

豆瓣电影作为国内知名的电影评分和评论网站,拥有大量用户评论数据。本篇文章将展示如何使用 Python 爬虫技术获取《穿靴子的猫2》的所有页的影评数据。由于豆瓣电影的反爬虫机制比较严格,因此需要使用一些反反爬虫的技巧,比如设置请求头、使用代理IP等。

代码示例

import requests
from lxml import html
import time
import random
import csv

# 请求头,模拟浏览器访问
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'}

# 代理IP,防止被封IP
proxies = [
    'http://117.91.130.130:808',
    'http://117.91.130.130:80',
    'http://117.91.130.130:8080',
    'http://117.91.130.130:3128',
]

# 爬取的页面数量
pages = 10

# 爬取数据保存的文件路径
filename = 'douban.csv'

# 电影名和电影ID
movie_name = '穿靴子的猫2'
movie_id = '26975883'

# 存储影评数据的列表
reviews = []

# 循环爬取每一页的数据
for i in range(pages):
    # 随机选择一个代理IP
    proxy = random.choice(proxies)

    # 构造URL
    url = 'https://movie.douban.com/subject/' + movie_id + '/comments?start=' + str(i * 20) + '&limit=20&sort=new_score&status=P'

    try:
        # 发送GET请求,获取响应
        response = requests.get(url, headers=headers, proxies={'http': proxy})

        # 解析响应,获取影评数据
        tree = html.fromstring(response.content)
        comments = tree.xpath('//div[@class="comment-item"]')
        for comment in comments:
            username = comment.xpath('.//span[@class="comment-info"]/a/text()')[0]
            rating = comment.xpath('.//span[@class="comment-info"]/span[2]/@class')[0][-2]
            content = comment.xpath('.//span[@class="short"]/text()')[0]
            reviews.append([username, rating, content])

        # 随机暂停一段时间,避免过度频繁访问被封IP
        time.sleep(random.randint(1, 5))

    except Exception as e:
        # 如果出现异常,记录错误信息并继续执行
        print('Error:', e)
        continue

# 将影评数据保存到CSV文件中
with open(filename, 'w', encoding='utf-8-sig') as f:
    writer = csv.writer(f)
    writer.writerow(['用户名', '评分', '影评内容'])
    writer.writerows(reviews)

print('Done!')

代码解析

  1. 设置请求头和代理IP: 代码首先定义了请求头 headers,模拟浏览器访问;并定义了代理IP列表 proxies,防止被封IP。
  2. 爬取数据参数: 定义了爬取页数 pages,保存文件路径 filename,电影名 movie_name 和电影ID movie_id 等参数。
  3. 循环爬取: 使用 for 循环遍历每一页,随机选择一个代理IP发送 GET 请求,获取响应并解析影评数据。
  4. 反爬虫策略: 随机暂停一段时间,避免过度频繁访问被封IP。
  5. 保存数据: 将爬取的影评数据保存到 CSV 文件中。

注意事项

  1. 豆瓣电影的反爬虫机制比较严格,如果爬虫频率过高或者使用相同的 IP 地址访问过多次,会被封禁 IP。
  2. 使用代理IP 和随机暂停时间等反反爬虫技巧是必要的。
  3. 请勿过度频繁访问,并遵守豆瓣网站的服务条款。

希望这篇文章能帮助您轻松获取豆瓣电影影评数据。如果您有任何问题,请随时留言。


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

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