一、爬虫对象-豆瓣电影短评

您好!我是@马哥python说,一名10年程序猿。

今天分享一期爬虫案例,爬取的目标是:豆瓣上任意一部电影的短评(注意:是短评,不是影评!),以《热烈》这部电影为例:

爬取以上6个关键字段,含:

页码, 评论者昵称, 评论星级, 评论时间, 评论者IP属地, 有用数, 评论内容。

二、爬取结果

爬取结果截图:

三、爬虫代码讲解

首先,导入需要用到的库:

import requests
from bs4 import BeautifulSoup
import pandas as pd
import os
import random
from time import sleep

定义一个请求头:

# 请求头
h1 = {
'Cookie': '换成自己的cookie',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Encoding': 'gzip, deflate',
'Host': 'movie.douban.com',
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.4 Safari/605.1.15',
'Accept-Language': 'zh-CN,zh-Hans;q=0.9',
'Referer': 'https://movie.douban.com/subject/35267224/?from=showing',
'Connection': 'keep-alive'
}

定义请求地址:(规律是:第1页start是0,第2页start是20,第3页start是40,所以总结出:start=(page-1)*20)

# 请求地址
url = 'https://movie.douban.com/subject/{}/comments?start={}&limit=20&status=P&sort=new_score'.format(v_movie_id, (page - 1) * 20)

用requests发送请求:

# 发送请求
response = requests.get(url, headers=h1, verify=False)

用BeautifulSoup解析页面数据:

# 解析页面数据
soup = BeautifulSoup(response.text, 'html.parser')

定义一些空列表,用于存放数据:

user_name_list = []  # 评论者昵称
star_list = [] # 评论星级
time_list = [] # 评论时间
ip_list = [] # 评论者ip属地
vote_list = [] # 有用数
content_list = [] # 评论内容

以"评论内容"字段为例:

for review in reviews:
# 评论内容
content = review.find('span', {'class': 'short'}).text
content = content.replace(',', ',').replace(' ', '').replace('\n', '').replace('\t', '').replace('\r', '')
content_list.append(content)

把所有字段存放的列表数据组成Dataframe格式:

df = pd.DataFrame(
{
'页码': page,
'评论者昵称': user_name_list,
'评论星级': star_list,
'评论时间': time_list,
'评论者IP属地': ip_list,
'有用数': vote_list,
'评论内容': content_list,
}
)

进一步保存到csv文件里:

# 保存到csv
df.to_csv(result_file, mode='a+', header=header, index=False, encoding='utf_8_sig')
print('文件保存成功:', result_file)

以上,核心逻辑讲解完毕。

代码中还含有:转换星级函数、自动翻页、文本清洗等功能,详见文末完整源码。

最后需要说明的是,豆瓣短评页面上最多只能看到30页,再往后翻页面一直显示载入中,所以该代码最多只能爬取30页短评。

三、演示视频

演示视频:【Python爬虫实战】爬取豆瓣电影短评,以《热烈》为例

四、获取完整源码

爱学习的小伙伴,本次分析过程的完整python源码及结果数据,我已打包好,并上传至我的微信公众号"老男孩的平凡之路",后台回复"爬豆瓣短评"即可获取。

点此直达:【爬虫实战】用python爬豆瓣电影《热烈》短评


我是@马哥python说,一名10年程序猿,持续分享python干货中!

【爬虫实战】用python爬豆瓣电影《热烈》短评的更多相关文章

  1. Python爬虫实战二之爬取百度贴吧帖子

    大家好,上次我们实验了爬取了糗事百科的段子,那么这次我们来尝试一下爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 前言 亲爱的们,教程比较旧了,百度贴吧页面可能改版,可能代码不 ...

  2. Python爬虫实战一之爬取糗事百科段子

    大家好,前面入门已经说了那么多基础知识了,下面我们做几个实战项目来挑战一下吧.那么这次为大家带来,Python爬取糗事百科的小段子的例子. 首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把 ...

  3. 转 Python爬虫实战二之爬取百度贴吧帖子

    静觅 » Python爬虫实战二之爬取百度贴吧帖子 大家好,上次我们实验了爬取了糗事百科的段子,那么这次我们来尝试一下爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 本篇目标 ...

  4. 转 Python爬虫实战一之爬取糗事百科段子

    静觅 » Python爬虫实战一之爬取糗事百科段子 首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把,这次我们尝试一下用爬虫把他们抓取下来. 友情提示 糗事百科在前一段时间进行了改版,导致 ...

  5. python简单爬豆瓣电影排名

    爬豆瓣电影 网站分析: 1 打开https://movie.douban.com,选择  [排行榜],然后随便选择一类型,我这里选择科幻    2 一直浏览网页,发现没有下一的标签,是下滑再加载的,可 ...

  6. Python爬虫实战三之爬取嗅事百科段子

    一.前言 俗话说,上班时间是公司的,下班了时间才是自己的.搞点事情,写个爬虫程序,每天定期爬取点段子,看着自己爬的段子,也是一种乐趣. 二.Python爬取嗅事百科段子 1.确定爬取的目标网页 首先我 ...

  7. 8.Python爬虫实战一之爬取糗事百科段子

    大家好,前面入门已经说了那么多基础知识了,下面我们做几个实战项目来挑战一下吧.那么这次为大家带来,Python爬取糗事百科的小段子的例子. 首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把 ...

  8. Python爬虫实战一之爬取QQ音乐

    一.前言   前段时间尝试爬取了网易云音乐的歌曲,这次打算爬取QQ音乐的歌曲信息.网易云音乐歌曲列表是通过iframe展示的,可以借助Selenium获取到iframe的页面元素, 而QQ音乐采用的是 ...

  9. python pandas 豆瓣电影 top250 数据分析

    豆瓣电影top250数据分析 数据来源(豆瓣电影top250) 爬虫代码比较简单 数据较为真实,可以进行初步的数据分析 可以将前面的几篇文章中的介绍的数据预处理的方法进行实践 最后用matplotli ...

  10. 利用Python爬取电影网站

    #!/usr/bin/env python #coding = utf-8 ''' 本爬虫是用来爬取6V电影网站上的电影资源的一个小脚本程序,爬取到的电影链接会通过网页的形式显示出来 ''' impo ...

随机推荐

  1. svn is already locked 最终解决方案

    今日执行项目更新时,手贱点击了cancel 中断了操作,最后导致项目被锁,杯具了. 首先想到了Clean up 直接提示 看来不行呀 -// 省略 n 多种尝试 最后使用删除db 中的 lock 表来 ...

  2. 如何用ReadWriteLock实现一个通用的缓存中心?

    摘要:在并发场景中,Java SDK中提供了ReadWriteLock来满足读多写少的场景. 本文分享自华为云社区<[高并发]基于ReadWriteLock开了个一款高性能缓存>,作者:冰 ...

  3. 基于 python3+nginx 的 Jupyter Notebook 服务端 ssl 访问

    引言 Jupyter Notebook(原名 ipython)可是科学计算界的必备工具,友好的界面,方便的交互,支持 Markdown,集中的极客们想要的一切特点,同时又制作的如此优雅和精美,真是难能 ...

  4. ChatGPT的原理与前端领域实践

    一.ChatGPT 简介 ChatGPT的火爆 ChatGPT作为一个web应用,自22年12月发布,仅仅不到3个月的时间,月活用户就累积到1亿.在此之前,最快记录的保持者也需要9个月才达到月活1亿. ...

  5. 分享6个SQL小技巧

    原创:扣钉日记(微信公众号ID:codelogs),欢迎分享,非公众号转载保留此声明. 简介 经常有小哥发出疑问,SQL还能这么写?我经常笑着回应,SQL确实可以这么写.其实SQL学起来简单,用起来也 ...

  6. 洛谷 P9047 [PA2021] Poborcy podatkowi

    题意 给一棵有边权的树,从中选出若干条长度为 4 的路径,要求边不交,求最大权值和. 数据范围:\(1\le n\le 2\times 10^5, -10^9\le w\le 10^9\). 题解 考 ...

  7. Java:错误:不支持发行版本5

    #解决方案1 1.点击File--Project Structure 2.点击Project 3.查看jdk版本是否和安装的一样 4.点击Modules 查看版本 5.点击Preferences--B ...

  8. C# - XMLHelper :一个操作XML的简单类库

    下午写了一个操作XML文件的类库,后来不用了,水篇文章存个档 整体功能 XMLHelper.cs主要提供以下功能: 加载XML文件:从文件路径或字符串中加载XML文档,并返回XmlDocument对象 ...

  9. JavaScript 整理的基础的方法

    innerHTML //innerHTML 属性设置或返回表格行的开始和结束标签之间的 HTML. innertext//innerText 属性返回文本值 没有结构信息 $("#test& ...

  10. 安装Hadoop单节点伪分布式集群

    目录 安装Hadoop单节点伪分布式集群 系统准备 开启SSH 安装JDK 安装Hadoop 下载 准备启动 伪分布式模式安装 配置 配饰SSH免密登录本机 测试启动 单节点安装YARN 伪分布式集群 ...