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

简介: 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的值进入不同的页面:


微信图片_20220421160428.jpg


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


微信图片_20220421160431.jpg


可以看到影评内容在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()

运行结果:


微信图片_20220421160434.jpg



相关文章
|
6月前
|
数据采集 Python
爬虫实战-Python爬取百度当天热搜内容
爬虫实战-Python爬取百度当天热搜内容
203 0
|
6月前
|
数据采集 JSON 数据格式
python爬虫之app爬取-charles的使用
charles 基本原理,charles抓包,分析,重发。
214 0
|
4月前
|
数据采集 Web App开发 存储
Python-数据爬取(爬虫)
【7月更文挑战第24天】
82 7
|
4月前
|
数据采集 机器学习/深度学习 算法
Python-数据爬取(爬虫)
【7月更文挑战第23天】
61 5
|
6月前
|
数据采集 测试技术 API
python爬虫之app爬取-微信朋友圈
搭建appium环境,appium基本使用,API操作等等
268 0
|
4月前
|
数据采集 存储 Web App开发
Python-数据爬取(爬虫)
【7月更文挑战第15天】
185 3
|
5月前
|
Web App开发 Python Windows
经验大分享:PYTHON爬取66影视的电影下载链接,有搜索功能
经验大分享:PYTHON爬取66影视的电影下载链接,有搜索功能
120 2
|
5月前
|
存储 XML 数据处理
Python网络实践:去哪儿旅游数据爬取指南
Python网络实践:去哪儿旅游数据爬取指南
149 1
|
5月前
|
数据采集 JSON 算法
使用Python爬取华为市场APP应用进行分析
这个网站也是作者最近接触到的一个APP应用市场类网站。讲实话,还是蛮适合新手朋友去动手学习的。毕竟爬虫领域要想进步,还是需要多实战、多分析!该网站中的一些小细节也是能够锻炼分析能力的,也有反爬虫处理。甚至是下载APP的话在Web端是无法拿到APK下载的直链,需要去APP端接口数据获取
|
5月前
|
Python 数据采集 安全
淘宝商品评论数据爬取:Python实战指南
淘宝商品评论数据的自动爬取可以为市场分析和用户行为研究提供宝贵的信息资源。然而,这一过程需要严格遵守法律法规,尊重数据的版权和隐私。通过合理利用Python的网络爬虫技术,可以在遵循道德规范的前提下,高效地完成数据采集任务。 通过本文的指南,希望你能对淘宝商品评论数据的爬取有一个清晰的认识,并能够安全、合法地进行数据采集。