10分钟用Python爬取最近很火的复联4影评

欲直接下载代码文件,关注我们的公众号哦!查看历史消息即可!


《复仇者联盟4:终局之战》已经上映快三个星期了,全球票房破24亿美元,国内票房破40亿人民币。

虽然现在热度逐渐下降,但是我们还是恬不知耻地来蹭一蹭热度。上映伊始《复联4》的豆瓣评分曾破了9分。

后来持续走低,现在《复联4》的评分稳定在8.6分。虽然豆瓣日常被人吐槽注水严重,恶意评分很多,但是由于它好爬鸭~,我们还是选择豆瓣作为爬取对象。豆瓣的长评论有文字和图片等其它元素,简单起见,这次只爬短评。

在浏览器中查看豆瓣关于复联4的短评,先来看看url的结构:

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

可见,我们可以通过修改start的值进入不同的页面:

右键查看源代码可以看到浏览器获取到的html页面代码。Ctrl F搜索第一条影评的关键词,快速定位到影评的标签:

可以看到影评内容在span标签中,class为“short”。

总览一下爬取内容的步骤:

1) 访问url,获取html页面文本,这一步我们要用到的是requests模块。

2) 解析返回的文本,提取出爬虫内容,这一步要用的是beautifulSoup模块。

这两个模块都可以通过pip直接下载。

首先是main函数:

def main():discuss = []a = 0for i in range(0,100,20):url = 'https://movie.douban.com/subject/26100958/comments?start='+ str(i) +'&limit=20&sort=new_score&status=P'HTMLpage = getHTML(url)#print(HTMLpage)for t in parseHTML(HTMLpage):discuss.append(t)for i in discuss:print(str(a) + ':' + i)
#        print(i)a = a + 1

由于豆瓣一页显示20条影评,我们爬前100条,所以这里访问了前5个页面:

def getHTML(url):try:r = requests.get(url)r.raise_for_status()
print("get html successfully")r.encoding = 'utf-8'#print(r.text)return r.textexcept:return ""

在getHTML函数中,我们申请访问目标页面,并返回html页面文本。注意这里应该将编码方式设置为utf-8,实测如果设置成r.encoding = r.apparent_encoding,程序并不能猜测到正确的编码方式。

当r.raise_for_status() 没有抛出异常时,程序通知我们获取html成功。如果有异常,返回空字符串。

下一步是解析:

如前所述影评是class为short的span,所以可以直接使用bs4的find_all()函数得到一个含有所有影评的tag的列表。我们只需要把tag中的文字提取出来就可以返回到主函数了。

首先要生成一个beautifulSoup类的对象,使用html的解析器。html页面是树状分布的,可以通过各种树的遍历找到我们需要的标签,这里bs4提供了一个简单粗暴的find_all,可以直接使用。

find_all()函数返回的是一个保存着tag的列表。

def parseHTML(html):try:soup = BeautifulSoup(html,"html.parser")A = soup.find_all('span',attrs = {'class':'short'})B = []for i in A:B.append(i.get_text())return Bexcept:return []

用get_text函数去掉span标签,只留下内容的文本,加入到B列表里。然后就可以返回了。同理,如果出错了,返回空列表。

好了以上就是一个非常简单的小爬虫,通过修改爬取的数量可以爬取任意页面的评论。当然了后续还会对这些数据进行一些有趣的分析,请关注我们。同时因为作者本人能力有限,本系列可能又要无限托更了/呲牙

下附完整版代码和运行结果【代码下载移步留言区】

import requests
from bs4 import BeautifulSoup
def getHTML(url):try:r = requests.get(url)r.raise_for_status()print("get html successfully")r.encoding = 'utf-8'#print(r.text)return r.textexcept:return ""
def parseHTML(html):try:soup = BeautifulSoup(html,"html.parser")A = soup.find_all('span',attrs = {'class':'short'})B = []for i in A:B.append(i.get_text())return Bexcept:return []
def main():discuss = []a = 0for i in range(0,100,20):url = 'https://movie.douban.com/subject/26100958/comments?start='+ str(i) +'&limit=20&sort=new_score&status=P'HTMLpage = getHTML(url)#print(HTMLpage)for t in parseHTML(HTMLpage):discuss.append(t)for i in discuss:print(str(a) + ':' + i)
#        print(i)a = a + 1if __name__ == "__main__":
main()

运行结果:

posted @ 2019-06-01 12:10 短短的路走走停停 阅读( ...) 评论( ...) 编辑 收藏

10分钟用Python爬取最近很火的复联4影评相关推荐

  1. bs4爬取的时候有两个标签相同_10分钟用Python爬取最近很火的复联4影评

    <复仇者联盟4:终局之战>已经上映快三个星期了,全球票房破24亿美元,国内票房破40亿人民币. 虽然现在热度逐渐下降,但是我们还是恬不知耻地来蹭一蹭热度.上映伊始<复联4>的豆 ...

  2. python如何爬取网页视频_快就完事了!10分钟用python爬取网站视频和图片

    原标题:快就完事了!10分钟用python爬取网站视频和图片 话不多说,直接开讲!教你如何用Python爬虫爬取各大网站视频和图片. 638855753 网站分析: 我们点视频按钮,可以看到的链接是: ...

  3. 5分钟学会Python爬取整个网站

    爬取网站的步骤: 设定爬取目标 目标网站:我自己的博客,疯狂的蚂蚁 http://www.crazyant.net 目标数据:所有博客文章的 - 链接.标题.标签 分析目标网站 待爬取页面:http: ...

  4. 怎么用python爬取整个网站_5分钟学会Python爬取整个网站

    本图文配套视频演示 爬取网站的步骤: 设定爬取目标 目标网站:我自己的博客,疯狂的蚂蚁 http://www.crazyant.net 目标数据:所有博客文章的 - 链接.标题.标签 2. 分析目标网 ...

  5. Python 爬取张国荣最火的 8 首歌,60000 评论看完泪奔!

    今天是4月1日. 每年的这一天, 一部分人搜索枯肠想尽办法整蛊, 一部分人感怀四月该很好,倘若你还在. 甚至有人,用AI的方式来还原你. 但那终究不是你啊. 图源见水印 你走了16年了,那些当年在课桌 ...

  6. Python爬取张国荣最火的8首歌,60000评论看完泪奔!

    「2019 Python开发者日」全日程揭晓,请扫码咨询 ↑↑↑ 作者 | 丁彦军&胡巍巍 来源 | 程序人生(coder_life) 昨天是 4 月 1 日. 每年的这一天, 一部分人搜索枯 ...

  7. Python 爬取张国荣最火的 8 首歌,60000 评论看完泪奔!...

    今天是4月1日. 每年的这一天, 一部分人搜索枯肠想尽办法整蛊, 一部分人感怀四月该很好,倘若你还在. 甚至有人,用AI的方式来还原你. 但那终究不是你啊. 你走了16年了,那些当年在课桌前趁老师不注 ...

  8. python爬取豆瓣《狂暴巨兽》评分影评,matplotlib和wordcloud制作评分图和词云图

    开发环境:win7,8,10,python3+ python模块:requestes,bs4,matplotlib,jieba,wordcloud,PIL,numpy,random 实现的功能和思路: ...

  9. 教你用python爬取网站数据

    编码问题 因为涉及到中文,所以必然地涉及到了编码的问题,这一次借这个机会算是彻底搞清楚了. 问题要从文字的编码讲起.原本的英文编码只有0~255,刚好是8位1个字节.为了表示各种不同的语言,自然要进行 ...

最新文章

  1. 图灵奖得主Geoffrey Hinton:脱缰的无监督学习,将带来什么
  2. 得到不小于x的最小的2的幂
  3. Angular里如何测试一个具有外部依赖的Component
  4. 史无前例!iPhone 14 Pro曝光:首次8GB RAM
  5. 亚马逊:贝佐斯没有闹钟
  6. 夏宇闻《Verilog数字系统设计教程》 - 第1章 Verilog的基本知识
  7. 新手CrossApp 之CollectionView小结
  8. fx3g485通讯模块_三菱FX3G型PLC采用RS485变频器作半双工
  9. dota2服务器何时修复,《DOTA2》10月10日更新:服务器改善bug饰品修复
  10. 基于RT1052 Aworks 测试PXP图像混合功能(十三)
  11. linux中i的英文单词,i的发音有几种
  12. asp.net动态网页制作视频教程
  13. 如何用python turtle 画出奥运五环图
  14. 华域php公司,华域智能DNS系统
  15. umijs介绍及基本用法、配置式路由、约定式路由、路由传参等
  16. openstreetmap-tile-server-ubuntu-16-04
  17. 我的Vu啊(vue 2.0,数据监听,计算属性,组件传参)
  18. python英文文本分析和提取_python如何提取英语pdf内容并翻译
  19. 苹果下一代iPhone曝光
  20. 台式电脑具有多个HDMI口时这些接口有什么区别吗?HDMI,DP,VGA各种口的区别是什么?

热门文章

  1. xampp中mysql3306端口被占用
  2. 用漫画的形式学习Python,Python好书推荐——《看漫画学Python》
  3. Spring Cloud Alibaba 快速入门(七):Gateway微服务网关
  4. 人人都应当控制的一些电脑操作技能
  5. Date类型与String类型互相转换
  6. 如何做好文旅夜游项目资源的综合开发
  7. iOS-微信支付商户支付下单id非法
  8. autocad锐龙英特尔_千元级CPU锐龙5 3600对决酷睿i5-10400F:游戏及创作性能对比
  9. 【课设】图书管理系统
  10. 通过jpg图片隐藏文件