【python】爬取豆瓣影评保存到Excel文件中【附源码】

Yan-英杰 2024-06-14 13:05:02 阅读 63

欢迎来到英杰社区

icon-default.png?t=N7T8

https://bbs.csdn.net/topics/617804998

 【往期相关文章】

爬取豆瓣电影排行榜Top250存储到Excel文件中

爬取豆瓣电影排行榜TOP250存储到CSV文件中

爬取知乎热榜Top50保存到Excel文件中

爬取百度热搜排行榜Top50+可视化

爬取斗鱼直播照片保存到本地目录

爬取酷狗音乐Top500排行榜

一、效果图:

2b064d442a33443d9d0dfad3dd284203.png

        以获取电影《肖申克的救赎》的评论为例,写一个爬取豆瓣影评保存到Excel文件中的爬虫程序

  

81e36e4307cb46bfb0c71b859574f080.png

二、 准备工作

(1)、导入必要的模块:

       代码首先导入了需要使用的模块:requests、lxml和csv。

import requestsfrom lxml import etreeimport csv

        如果出现模块报错

c124a1693bfc457ba1f2909ee9d299fc.png

        进入控制台输入:建议使用国内镜像源

pip install 模块名称 -i https://mirrors.aliyun.com/pypi/simple

         我大致罗列了以下几种国内镜像源:

清华大学https://pypi.tuna.tsinghua.edu.cn/simple阿里云https://mirrors.aliyun.com/pypi/simple/豆瓣https://pypi.douban.com/simple/ 百度云https://mirror.baidu.com/pypi/simple/中科大https://pypi.mirrors.ustc.edu.cn/simple/华为云https://mirrors.huaweicloud.com/repository/pypi/simple/腾讯云https://mirrors.cloud.tencent.com/pypi/simple/

三、代码详情

import requestsfrom bs4 import BeautifulSoupfrom openpyxl import Workbook

首先,我们导入了三个必要的Python模块:requests、BeautifulSoup和openpyxl。requests用于发送HTTP请求,BeautifulSoup用于解析HTML页面,openpyxl用于生成Excel文件并将影评数据写入到Excel文件中。

 

def get_reviews(movie_id): url = f'https://movie.douban.com/subject/{movie_id}/comments?status=P' 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'} response = requests.get(url, headers=headers) soup = BeautifulSoup(response.text, 'html.parser') reviews = soup.find_all('span', class_='short') return [review.get_text() for review in reviews]

        定义一个名为`get_reviews()`的函数,它接受一个参数movie_id,该参数表示电影在豆瓣网站上的唯一标识符。该函数使用f-string构建了影评页面的URL,并设置了请求头`headers`来伪装成浏览器访问方式。然后使用requests库发送GET请求获取页面内容。接着使用BeautifulSoup库解析HTML页面,并使用CSS选择器定位到影评所在的元素。最后,将影评内容提取出来并返回一个包含影评文本的列表。

        

def save_to_excel(reviews): workbook = Workbook() sheet = workbook.active sheet['A1'] = '影评' for i, review in enumerate(reviews, start=2): sheet[f'A{i}'] = review workbook.save('reviews.xlsx')

        定义一个名为`save_to_excel()`的函数,它接受一个参数`reviews`,表示要保存的影评列表。函数使用openpyxl库创建一个新的Excel工作簿,并获取工作簿的活动工作表。然后,将影评列表中的每个影评逐行写入Excel工作表的列A中。最后,使用save()方法将工作簿保存为名为"reviews.xlsx"的Excel文件。

        

if __name__ == '__main__': movie_id = '1292052' # 肖申克的救赎的电影ID reviews = get_reviews(movie_id) save_to_excel(reviews) print('影评已保存到reviews.xlsx文件中。')

        主程序代码,首先指定了要获取影评的电影ID(在豆瓣电影网址中可以找到)。然后,调用`get_reviews()`函数获取影评列表,再将该列表传递给`save_to_excel()`函数进行保存。最后,打印提示信息,表示影评已成功保存到Excel文件中。

部分代码:

import requestsfrom bs4 import BeautifulSoupfrom openpyxl import Workbookdef get_reviews(movie_id): url = f'https://movie.douban.com/subject/{movie_id}/comments?status=P' 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'} response = requests.get(url, headers=headers) soup = BeautifulSoup(response.text, 'html.parser') reviews = soup.find_all('span', class_='short') return [review.get_text() for review in reviews]

完整代码:

        资料获取,更多粉丝福利,关注下方公众号获取,直接搜索“英杰代码编程”

        回复"python影评",“豆瓣影评”,“爬取豆瓣影评” 均可获取完整代码

97087c4097a441dc86d252ad379fe396.gif



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。