爬取豆瓣电影最新评论的Python爬虫代码示例
人气:276时间:2025-04-21 20:17:09
佚名 资讯随着互联网的发展,电影评论成为广大影迷表达观影感受的重要平台。豆瓣电影作为中国最大的电影、图书、音乐等文化产品评分和评论网站,其评论内容丰富且具有较高的参考价值。因此,许多开发者和数据分析者希望通过编写Python爬虫,自动采集豆瓣电影的最新评论,以做情感分析、用户行为研究或推荐系统等。本文将以“爬取豆瓣电影最新评论的Python爬虫代码示例”为主题,详细介绍实现思路和示例代码,帮助读者快速入门。
首先,了解豆瓣电影评论的网页结构是爬取的前提。豆瓣电影的评论页面通常是以分页的形式展现最新评论(例如:https://movie.douban.com/subject/电影ID/comments)。每条评论包含评论者昵称、评论内容、评分、时间等信息。通过观察网页源码,我们会发现评论数据多数以HTML文本形式存储,可以通过解析HTML提取相应内容。
爬取时要注意豆瓣对机器人访问有限制,比如访问频率限制和部分接口需要登录,因此建议合理设置请求间隔,模拟正常用户访问,避免被封IP。可以使用Python的requests库发送HTTP请求,BeautifulSoup进行HTML解析。此外,若需要异步并发抓取,可以考虑aiohttp和asyncio库。
下面是一个简单的Python爬虫代码示例,通过requests请求豆瓣电影评论页,使用BeautifulSoup提取最新评论内容。此示例仅爬取第一页最新评论,供初学者参考:
import requests
from bs4 import BeautifulSoup
import time
def get_douban_comments(movie_id, page=1):
# 豆瓣评论URL构造
url = fhttps://movie.douban.com/subject/{movie_id}/comments?start={(page-1)*20}&limit=20&status=P&sort=new_score
headers = {
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko),
Referer: fhttps://movie.douban.com/subject/{movie_id}/
}
response = requests.get(url, headers=headers)
if response.status_code != 200:
print(f请求失败,状态码:{response.status_code})
return []
soup = BeautifulSoup(response.text, html.parser)
comments_list = []
comment_divs = soup.find_all(div, class_=comment-item)
for div in comment_divs:
user = div.find(a, class_=).get_text(strip=True)
comment = div.find(span, class_=short).get_text(strip=True)
star_tag = div.find(span, class_=comment-info).find(span, class_=rating)
star = star_tag[class][0].replace(allstar, ) if star_tag else 无评分
time_tag = div.find(span, class_=comment-info).find_all(span)[-1]
comment_time = time_tag.get_text(strip=True)
comments_list.append({
user: user,
comment: comment,
star: star,
time: comment_time
})
return comments_list
if __name__ == __main__:
movie_id = 1292052 # 例如《肖申克的救赎》的豆瓣ID
comments = get_douban_comments(movie_id)
for idx, c in enumerate(comments, 1):
print(f{idx}. 用户:{c[user]} 评分:{c[star]} 时间:{c[time]}\n评论内容:{c[comment]}\n)
time.sleep(1) # 稍作等待,防止频繁请求
以上代码中,我们通过传入电影ID,构造带分页参数的URL,从页面解析用户昵称、评论短句、评分标签及发表时间。豆瓣的评分标签是以“allstar”加数字表示,如“allstar50”代表5星,方便后续转换。若无评分,则显示“无评分”。
在实际应用中,用户可能需要获取多页评论,可通过循环分页参数增加start的值,每页最多20条评论。建议设置合适的爬取速度,避免过于频繁造成豆瓣服务器拒绝服务。还可以对数据做进一步清洗和存储,如保存到CSV文件或数据库,方便后续分析。
需要注意的是,豆瓣对于大量数据请求可能存在反爬措施,如验证码或登录限制。如果项目做规模性爬取,建议结合代理IP池、模拟浏览器行为(比如Selenium)或调用豆瓣开放API(如果有授权)等方法。并且请遵守豆瓣的法律条款和用户协议,确保数据爬取行为合法合规。
总结来说,Python凭借丰富的第三方库和简洁的语法,是实现爬取豆瓣电影最新评论的利器。通过requests获取网页内容,BeautifulSoup解析HTML结构,结合合理的请求策略,轻松实现自动采集目标数据。希望本文分享的示例和思路,能帮助更多开发者入门电影评论爬取和数据分析。