10分钟用python爬取最近很火的复联4影评(代码片段)

dengfaheng dengfaheng     2022-12-15     356

关键词:

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

技术图片
《复仇者联盟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 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.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()

运行结果:

技术图片

反贪风暴4-猫眼影评从爬取到可视化(代码片段)

我感觉学习python有一个阶段就是熟悉它的各种第三方库的使用,这次我们用jieba分词,用wordcloud生成词云,用pyecharts生成柱状图,来看看吧~若您有需要,所有文件已上传到我的github(左上角图标直达)~从爬虫开始好了,猫眼电... 查看详情

【python爬虫实战】爬取豆瓣影评数据

参考技术A爬取豆瓣影评数据步骤:1、获取网页请求2、解析获取的网页3、提速数据4、保存文件 查看详情

最近很火的手机壁纸

心有所属,却悲伤成海。 关注微信公众号获取更多 查看详情

用requests和etree爬取豆瓣电影评论(代码片段)

...瓣电影的短评温馨提示:博主使用的系统为win10,使用的python版本为3.6.5一、网页分析首先我们使用chrome浏览器打开某一部电影的评论(这里示例为最近很火的《一出好戏》),我们首先可以判断该网站 查看详情

python用tkinter做一个最近很火的强制表白神器(代码片段)

...定事件💎消息框扫雷小游戏💎强行表白神器尽管Python提供了多个消息框已经能够满足大部分正常人的需求,但并不够灵活,所以有的时候不得不自定义消息框。新建窗口消息框的本质是一个窗口、一段信息,... 查看详情

let’sencrypt最近很火的免费ssl使用教程

2015年10月份,微博上偶然看到Let‘sEncrypt推出了beta版,作为一个曾经被https虐出血的码农来说,这无疑是一个重磅消息。并且在全站Https的大趋势下,Let‘sEncrypt脱颖而出,无疑会对传统SSL证书提供商造成不小的打击,并将Https的... 查看详情

最近很火的safearea到底是什么

iOS7之后苹果给UIViewController引入了topLayoutGuide和bottomLayoutGuide两个属性来描述不希望被透明的状态栏或者导航栏遮挡的最高位置(statusbar,navigationbar,toolbar,tabbar等)。这个属性的值是一个length属性(topLayoutGuide.length)。这个值可能由当前... 查看详情

最近很火的人工智能chatgpt可以实现“连续对话”机制

前言最近很火的人工智能ChatGPT、不仅可以可以回答提问的特定问题,竟然还可以连续完成对话???接下来请看我们两者之间的对话 查看详情

最近很火的人工智能chatgpt可以实现“连续对话”机制

前言最近很火的人工智能ChatGPT、不仅可以可以回答提问的特定问题,竟然还可以连续完成对话???接下来请看我们两者之间的对话 查看详情

letsencrypt最近很火的免费ssl使用教程

gitclonehttps://github.com/letsencrypt/letsencrypt2.下载完成之后,执行ls命令会看到当前目录下多了一个letsencrypt目录,进入这个目录:cdletsencrypt3.准备安装,执行如下命令:./letsencrypt-auto原文http://blog.csdn.net/github_26672553/article/details/50 查看详情

最近很火的区块链

最近无论是在技术论坛,还是群分享会,都在热火朝天地聊着区块链,那么今天我就自己的理解和大家分享一下什么是区块链。不得不聊的比特币之所以区块链突然火起来,是因为比特币在2017年年底突然暴涨࿰... 查看详情

ffmpeg/camera实现最近很火的视频壁纸,相机壁纸

本篇实现一个有意思的玩意儿,视频壁纸,相机壁纸这玩意好像现在还都是国外版本,哈哈先上图:视频壁纸相机壁纸1.动态壁纸制作的知识:每一个动态壁纸都继承自WallpaperService,其中必须实现的抽象方法onCreateEngine,返回一... 查看详情

最近很火的微信牛牛棋牌房卡搭建的源码的一个bug修复

最新版修复所有bug出租微信牛牛棋牌房卡搭建(h5.fanshubbs.com)扣扣1687054422BUG说明:当后台设定某个玩家的控制赢率后。10局20局的就没有问题。当是大于20,就会出现玩到最后打到超过20局时,就会出现卡死,不发牌不准备也不... 查看详情

百度网盘免费提速下载(另推荐两个最近很火的网盘)

昨天看到百度网盘看广告免费提速下载的消息,马上试了一下,还是挺给力的。一、百度网盘免费提速下载说明:仅适用于百度网盘手机APP需要看一段20秒的广告每次看完广告之后可以使用60秒的加速通道适用于小文件的下载,... 查看详情

python爬取《流浪地球》豆瓣影评与数据分析(代码片段)

一、选题背景:  2019年年初,《流浪地球》全国上榜。在豆瓣上,首日开分站稳8分以上,评分了之后点映的高热。微博上跟着出现吴京客串31天与6000万的热度搜。知乎上关于“评价刘慈欣如何评价刘慈欣小说改编的同名电影... 查看详情

github上很火的7个学习python编程的开源仓库

△点击上方“Python猫”关注,回复“1”领取电子书来源:开源最前线(ID:OpenSourceTop)很多伙伴们在学习Python的过程中,更倾向于在Github上寻找Python学习资料,今天就和大家分享Github上7个绝佳的Python... 查看详情

activereports大数据分析报告用数据分析的手段告诉你,复联4有多火爆?

...24日零时,随着万众期待的《复仇者联盟4》(以下简称《复联4》)正式上映,一切谜底都将揭晓。当然,与之相伴的,还有电影市场对于《复联4》票房的期待。根据猫眼专业版票房平台数据统计,《复联4》从预售以来,在电影... 查看详情

python爬虫爬取豆瓣影评返回403怎么办,代理ip和cookie都设置了

如果只是爬取影评的话,没必要登录。返回的304是你的cookie用的是旧的。去掉cookie,正常抓取就可以了。参考技术A使用618动态爬虫就可以,电信ADSL每次拨号就会更换一个IP,可以按这个思路去做。可以根据爬虫对象的限制策略... 查看详情