爬取豆瓣短评(以电锯惊魂为例) 您所在的位置:网站首页 豆瓣短评投票怎么取消 爬取豆瓣短评(以电锯惊魂为例)

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

2024-06-19 23:29| 来源: 网络整理| 查看: 265

目录

一、引言

二、准备工作

三、爬取豆瓣短评

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)

查看网页的文本数据

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

result_content = re.findall(r'(.*?)', 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'(.*?)', 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)



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有