欢迎来到英杰社区https://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
如果出现模块报错
进入控制台输入:建议使用国内镜像源
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影评",“豆瓣影评”,“爬取豆瓣影评” 均可获取完整代码