爬取豆瓣短评(以电锯惊魂为例)

目录

一、引言

二、准备工作

三、爬取豆瓣短评

1.确定url

2.模拟浏览器行为,创建请求头

3.获取评论

四、生成xlsx

五、 完全代码和部分数据展示


一、引言

豆瓣作为中国最大的电影评论网站之一,拥有大量的电影评论数据。这些数据对于电影研究者、影迷以及电影产业相关人士来说,具有极高的价值。

本文只介绍如何使用Python爬取豆瓣短评。

豆瓣链接\rightarrow豆瓣 (douban.com)

二、准备工作

在进行爬虫编程之前,我们需要安装一些必要的Python库。这些库包括requests、pandas和re等。安装方法可以使用pip命令。

win+r弹出窗口输入cmd进入命令提示符窗口就可以输入pip命令.

pip install requests pandas re

下载速度慢的可以用下面的代码。

pip install requests pandas re -i https://pypi.tuna.tsinghua.edu.cn/simple

requests模块\rightarrow Python requests 模块 | 菜鸟教程 (runoob.com)

三、爬取豆瓣短评

1.确定url

首先确定要爬取的网站的url\rightarrow电锯惊魂 短评 (douban.com)

https://movie.douban.com/subject/1417598/comments?start=0&limit=20&status=P&sort=new_score

然后分析代码url,发现每个页面的url中start=的数值不同且每一个数值是从零开始20的翻倍。下面是第二页的代码。

https://movie.douban.com/subject/1417598/comments?start=20&limit=20&status=P&sort=new_score

 通过以上的分析,可以通过for循环获取多个页面的url。

for i in range(0, 10):
    url = "https://movie.douban.com/subject/1417598/comments?start={}&limit=20&status=P&sort=new_score".format(
        i * 20)
    print(url)

formt可以去Python format 格式化函数 | 菜鸟教程 (runoob.com)了解

2.模拟浏览器行为,创建请求头

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36',
    'Cookie': 'bid=hCw6GK7T3ko; _pk_id.100001.4cf6=e05499d4844cbfde.1697382901.; __yadk_uid=Y0K7d13OW6bvDo7Rfg4GEhEopPLKv9Vk; ll="118303"; _vwo_uuid_v2=D116B2284E0415DE6F0E8E62C0F3F1B7C|dbd80bec580d442e73cbc806b51e709a; ct=y; douban-fav-remind=1; __utmc=30149280; __utmz=30149280.1698504570.8.7.utmcsr=baidu|utmccn=(organic)|utmcmd=organic; __utmc=223695111; __utmz=223695111.1698504570.7.6.utmcsr=baidu|utmccn=(organic)|utmcmd=organic; Hm_lvt_16a14f3002af32bf3a75dfe352478639=1698504600; Hm_lpvt_16a14f3002af32bf3a75dfe352478639=1698504600; ap_v=0,6.0; _pk_ref.100001.4cf6=%5B%22%22%2C%22%22%2C1698558921%2C%22https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3DxUZ2pFPHLGI9UjAZ5BVOkGTqzr9mirz0hM9tSnQ4LgGBvkpYQRkEaveglj68M1Hs%26wd%3D%26eqid%3Dbd0c500a000673f800000006653d1f77%22%5D; __utma=30149280.1569954803.1697382901.1698557082.1698558922.11; __utma=223695111.1379090793.1697382901.1698557082.1698558922.10'
}

3.获取评论

result = requests.get(j, headers=headers)
print(result.text)

查看网页的文本数据

看出评论在<span>中,通过正则表达的非贪婪模式来获取<span>标签中的内容

result_content = re.findall(r'<span class="short">(.*?)</span>', result.text)

了解正则表达\rightarrowPython3 正则表达式 | 菜鸟教程 (runoob.com)

四、生成xlsx

利用pnadas库可以生成xlsx或csv文件等

df = pd.DataFrame(result_contents, columns=['评论'])
df.to_excel('电锯惊魂短评.xlsx', index=False)

pandas库可以去Pandas 教程 | 菜鸟教程 (runoob.com) 查看详情

生成不了可能是缺少库,可以使用pip命令安装。

pip install openpyxl

pip install xlsxwriter

五、 完全代码和部分数据展示

import requests
import pandas as pd
import re
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36',
    'Cookie': 'bid=hCw6GK7T3ko; _pk_id.100001.4cf6=e05499d4844cbfde.1697382901.; __yadk_uid=Y0K7d13OW6bvDo7Rfg4GEhEopPLKv9Vk; ll="118303"; _vwo_uuid_v2=D116B2284E0415DE6F0E8E62C0F3F1B7C|dbd80bec580d442e73cbc806b51e709a; ct=y; douban-fav-remind=1; __utmc=30149280; __utmz=30149280.1698504570.8.7.utmcsr=baidu|utmccn=(organic)|utmcmd=organic; __utmc=223695111; __utmz=223695111.1698504570.7.6.utmcsr=baidu|utmccn=(organic)|utmcmd=organic; Hm_lvt_16a14f3002af32bf3a75dfe352478639=1698504600; Hm_lpvt_16a14f3002af32bf3a75dfe352478639=1698504600; ap_v=0,6.0; _pk_ref.100001.4cf6=%5B%22%22%2C%22%22%2C1698558921%2C%22https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3DxUZ2pFPHLGI9UjAZ5BVOkGTqzr9mirz0hM9tSnQ4LgGBvkpYQRkEaveglj68M1Hs%26wd%3D%26eqid%3Dbd0c500a000673f800000006653d1f77%22%5D; __utma=30149280.1569954803.1697382901.1698557082.1698558922.11; __utma=223695111.1379090793.1697382901.1698557082.1698558922.10'
}
result_contents = []
urls = []
count = 0
# 获取多个url
for i in range(0, 10):
    url = "https://movie.douban.com/subject/1417598/comments?start={}&limit=20&status=P&sort=new_score".format(
        i * 20)
    print(url)
    urls.append(url)
# 获取评论
for j in urls:
    result = requests.get(j, headers=headers)
    # print(result.text)
    result_content = re.findall(r'<span class="short">(.*?)</span>', result.text)
    count = count + 1
    print(f"第{count}页评论获取成功")
    # 把全部评论放进列表
    for k in result_content:
        result_contents.append(k)
# 生成xlsx
df = pd.DataFrame(result_contents, columns=['评论'])
df.to_excel('电锯惊魂短评.xlsx', index=False)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值