由于豆瓣电影的反爬虫机制比较严格,因此需要使用一些反反爬虫的技巧,比如设置请求头、使用代理IP等。

以下是使用Python编写的爬虫代码:

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!')

该代码首先定义了请求头和代理IP列表,然后设置了需要爬取的页数、爬取数据保存的文件路径、电影名和电影ID等参数。接着使用for循环遍历每一页,随机选择一个代理IP发送GET请求,获取响应并解析影评数据。爬取完一页后,代码会随机暂停一段时间,避免过度频繁访问被封IP。最后将影评数据保存到CSV文件中。

需要注意的是,豆瓣电影的反爬虫机制比较严格,如果爬虫频率过高或者使用相同的IP地址访问过多次,会被封禁IP。因此,使用代理IP和随机暂停时间等反反爬虫技巧是必要的

使用网络爬虫技术抓取《穿靴子的猫2》在豆瓣电影上所有页的影评数据给我代码

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

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