Python 爬取豆瓣电影《穿靴子的猫2》影评数据:反爬虫技巧与代码示例
使用 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!')
代码解析
- 设置请求头和代理IP: 代码首先定义了请求头
headers,模拟浏览器访问;并定义了代理IP列表proxies,防止被封IP。 - 爬取数据参数: 定义了爬取页数
pages,保存文件路径filename,电影名movie_name和电影IDmovie_id等参数。 - 循环爬取: 使用
for循环遍历每一页,随机选择一个代理IP发送 GET 请求,获取响应并解析影评数据。 - 反爬虫策略: 随机暂停一段时间,避免过度频繁访问被封IP。
- 保存数据: 将爬取的影评数据保存到 CSV 文件中。
注意事项
- 豆瓣电影的反爬虫机制比较严格,如果爬虫频率过高或者使用相同的 IP 地址访问过多次,会被封禁 IP。
- 使用代理IP 和随机暂停时间等反反爬虫技巧是必要的。
- 请勿过度频繁访问,并遵守豆瓣网站的服务条款。
希望这篇文章能帮助您轻松获取豆瓣电影影评数据。如果您有任何问题,请随时留言。
原文地址: https://www.cveoy.top/t/topic/oA0d 著作权归作者所有。请勿转载和采集!