《复仇者联盟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 = 0    for 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.text    except:        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 B    except:        return []

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

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

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

import requestsfrom bs4 import BeautifulSoupdef getHTML(url):    try:        r = requests.get(url)        r.raise_for_status()        print("get html successfully")        r.encoding = 'utf-8'        #print(r.text)        return r.text    except:        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 B    except:        return []def main():    discuss = []    a = 0    for 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        if __name__ == "__main__":main()

运行结果:

注:本文作者来自小编一同学。

他的公众号:木白瞎说。大家可以关注一下。

扫码入QQ群,获取更多的运筹优化算法及人工智能算法学习资料

↓↓↓

注:微信群请在公众号菜单点击

资源下载->微信粉丝群

获取最新群邀请链接。

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

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

    10分钟用Python爬取最近很火的复联4影评 欲直接下载代码文件,关注我们的公众号哦!查看历史消息即可! <复仇者联盟4:终局之战>已经上映快三个星期了,全球票房破24亿美元,国内票房破 ...

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

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

  3. bs4爬取的时候有两个标签相同_PYTHON爬取数据储存到excel

    PYTHON爬取数据储存到excel 大家周末好呀,我是滑稽君.前两天上网课时朋友发来消息说需要爬取一些数据,然后储存到excel里.记得我公众号里发过关于爬虫的文章,所以找我帮个忙.于是滑稽君花时间 ...

  4. python爬微博数据合法吗_GitHub - ChaliceRunRunRun/weibo-crawler: 新浪微博爬虫,用python爬取新浪微博数据...

    功能 连续爬取一个或多个新浪微博用户(如Dear-迪丽热巴.郭碧婷)的数据,并将结果信息写入文件.写入信息几乎包括了用户微博的所有数据,主要有用户信息和微博信息两大类,前者包含用户昵称.关注数.粉丝数 ...

  5. python爬取boss直聘招聘信息_年底啦,利用Python爬取Boss直聘的招聘信息,为明年跳槽做准备...

    原标题:年底啦,利用Python爬取Boss直聘的招聘信息,为明年跳槽做准备 前言 为什么都说程序员的薪资高,但是刚开始入职的你,薪资并不是自己想象中的那样,首先是你的工作经验不足,其次就是需要不断的 ...

  6. python爬取b站评论_学习笔记(1):写了个python爬取B站视频评论的程序

    学习笔记(1):写了个python爬取B站视频评论的程序 import requests import json import os table='fZodR9XQDSUm21yCkr6zBqiveY ...

  7. python爬取学籍_仝卓学籍造假微博道歉,用Python抓取微博的评论看看群众都说什么...

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 欢迎关注小编,除了分享技术文章之外还有很多福利,私信学习资料可以领取包括不 ...

  8. python爬取抖音用户数据_一篇文章教会你用Python抓取抖音app热点数据

    今天给大家分享一篇简单的安卓app数据分析及抓取方法.以抖音为例,我们想要抓取抖音的热点榜数据. 要知道,这个数据是没有网页版的,只能从手机端下手. 首先我们要安装charles抓包APP数据,它是一 ...

  9. bs4爬取的时候有两个标签相同_python爬虫初体验,爬取中国最好大学网大学名次...

    程序员天天只顾写生活琐事的文章可就太对不起其他的程序员们了,某大佬给我在线寄了一张刀片的图片,催更技术分享,不得不动手了.从今年刚开始学习python,美妙的语法令人陶醉,好用的第三方库令人爱不释手. ...

最新文章

  1. pandas对dataframe的数据列进行随机抽样(Random Sample of Columns):使用sample函数进行数据列随机抽样(有放回的随机抽样,replacement)
  2. HTC开放Vive Tracker代码啦!
  3. OpenCV的示例程序在哪里?
  4. ReactiveNative学习之Diff算法
  5. linux 同步 多终端,Linux系统如何实现不同终端间的同步
  6. 当集合a为空集时a的取值范围_1.2 集合间的基本关系20202021学年高一数学新教材配套学案(人教A版必修第一册)...
  7. Mac下 javac java 进行编译和运行含有包路径及引入jar包的类
  8. Bailian1835 POJ1835 宇航员【模拟】
  9. 正则表达式-找出电话号码
  10. Hibernate之复合主键映射
  11. php使用memcached缓存总结
  12. pyecharts制作中国疫情地图
  13. 大智慧有Linux炒股软件,UOS(Deepin Linux)安装炒股软件(通达信大智慧等)的方法...
  14. 英国高中A-Level和IB课程介绍
  15. 「 微信黑科技 」神奇符号
  16. 傅立叶变换之(二)—— 傅立叶级数
  17. QPS、TPS、PV、UV、GMV、IP、RPS的概念解释
  18. 不积跬步无以至千里,反思
  19. c++判断整数翻转溢出_C++整数溢出
  20. 调用自定义模块出现ModuleNotFoundError: No module named ‘XXX‘的解决方案

热门文章

  1. 功能区不显示工具条_【新老客户必知】软件支持超高清屏显示器了
  2. android recycleview长按多选_UI设计中Android和IOS设计差异总结
  3. docker简介与搭建
  4. Java Thread类的静态void sleep(long time_in_ms)方法,带示例
  5. 基于 MyBatis 手撸一个分表插件
  6. Redis 面试题补充与汇总
  7. 有关链表的小技巧,我都给你总结好了
  8. Pytorch 版YOLOV5训练自己的数据集
  9. linux 程序占内存,linux下,一个运行中的程序,究竟占用了多少内存
  10. jq在html中添加dom元素,使用jQuery添加DOM元素的最佳方法