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

欢迎来到英杰社区icon-default.png?t=N7T8https://bbs.csdn.net/topics/617804998

 【往期相关文章】

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

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

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

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

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

爬取酷狗音乐Top500排行榜

一、效果图:

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

  

二、 准备工作

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

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

import requests
from lxml import etree
import 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 requests
from bs4 import BeautifulSoup
from 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 requests
from bs4 import BeautifulSoup
from openpyxl import Workbook


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]


完整代码:

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

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

最近更新

  1. TCP协议是安全的吗?

    2024-01-26 22:30:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-26 22:30:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-26 22:30:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-26 22:30:01       18 阅读

热门阅读

  1. JVM实战(33)——内存溢出之内存使用率过高

    2024-01-26 22:30:01       39 阅读
  2. 三、详解Redis分布式锁&Redisson分布式锁

    2024-01-26 22:30:01       33 阅读
  3. 本人原创写的用PHPps支付宝支付凭证截图的源码

    2024-01-26 22:30:01       29 阅读
  4. apt-mark详解

    2024-01-26 22:30:01       30 阅读
  5. 动态链接和静态链接及交叉编译的思考

    2024-01-26 22:30:01       33 阅读