Python之爬取《你好,李焕英》电影豆瓣短评

本文通过实例展示了如何使用Python和Xpath技术从豆瓣电影《你好,李焕英》的短评页面抓取评论者、评分、日期、点赞和内容,适合初学者入门。受限于豆瓣反爬策略,仅抓取了前500条热门评论。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2021年春节档热播电影《你好,李焕英》,拿下累计票房54.12亿,一路杀进中国票房榜前五,堪称票房黑马。今天就以《你好,李焕英》这部电影为例,利用Python中的Xpath爬取其豆瓣短评,爬取的字段主要有:评论者评分评论日期点赞数以及评论内容。该案例难度系数不大,刚好作为入门案例,废话不多说,让我们一起去看看吧!

查看源图像

注:虽然在《你好,李焕英》豆瓣短评首页中显示共有41万多条短评,但是当浏览时,却发现只能查看前25页的短评,也就是说用户只能看到500条短评评论。发现这个问题后,查阅了一些相关资料,原来是豆瓣电影早在2017年起就不再展示全部短评。官方给出的调整原因是:“为了在不影响用户体验的前提下反爬虫、反水军”(无奈.ipg)。鉴于此,本案例只爬取前500条热门短评。

 

1. 获取《你好,李焕英》豆瓣短评URL

不论爬取什么网站,第一步都是先获取我们所要爬取的网站地址,也就是url,获取的途径就是打开浏览器,找到《你好,李焕英》短评所在网页界面,然后地址栏中即为我们所需要的url。(注:一般情况下,网站第一页的url不会显示页码,所以这里就需要查看第二页的url)

 

所以,该URL即为:

# 第一页的url
url = "https://movie.douban.com/subject/34841067/comments?start=0&limit=20&status=P&sort=new_score"

# 多页时,只需加入循环
for i in range(25): #豆瓣限制最多爬取25页,400条短评
    url = "https://movie.douban.com/subject/34841067/comments?start={}&limit=20&status=P&sort=new_score".format(i*20)
好的,这是一个正常的技术问题。我可以帮您回答。 可以使用Python爬虫库BeautifulSoup和Requests来爬取你好李焕英豆瓣短评信息。首先需要在豆瓣上登陆账号,接着使用Requests库将请求发送到短评页面获取html源代码,再通过BeautifulSoup库解析源代码,最后提取需要的信息。 以下是Python代码示例: ```python import requests from bs4 import BeautifulSoup import csv url = 'https://movie.douban.com/subject/35026712/comments?status=P' # 登陆请求,替换username和password参数 login_url = 'https://accounts.douban.com/j/mobile/login/basic' login_data = { 'name': 'username', 'password': 'password' } session = requests.Session() session.post(login_url, data=login_data) # 获取前5页评论 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.36' } page_num = 0 comment_list = [] while page_num < 5: review_url = url + '&start=' + str(page_num * 20) html = session.get(review_url, headers=headers).text soup = BeautifulSoup(html, 'html.parser') comments = soup.find_all('div', class_='comment-item') for comment in comments: username = comment.find('a', class_='').text.strip() content = comment.find('span', class_='short').text.strip() score = comment.find('span', class_='comment-info').find_all('span')[1]['class'][0][-2] timestamp = comment.find('span', class_='comment-time').text.strip() comment_list.append([username, content, score, timestamp]) page_num += 1 # 将结果保存至csv文件 with open('douban_comments.csv', 'w', newline='', encoding='utf-8') as f: writer = csv.writer(f) writer.writerow(['用户名', '短评正文', '评分', '发布时间']) writer.writerows(comment_list) ``` 运行代码后,将会生成一个名为" douban_comments.csv" 的文件,里面包含所需的信息。 希望这个回答能够帮到您,如果还有其他问题,欢迎继续向我提问。
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数分小白龙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值