编程语言
首页 > 编程语言> > 爬虫项目十四:Python爬下豆瓣《我的姐姐》两千条影评,看看大家对其评价如何

爬虫项目十四:Python爬下豆瓣《我的姐姐》两千条影评,看看大家对其评价如何

作者:互联网

文章目录


前言

爬取豆瓣影评,爬虫代码已经封装好,修改请求头 和url即可采集你想要采集的电影影评


提示:以下是本篇文章正文内容,下面案例可供参考

一、分析URL

观察url我们可以发发现其url变化的规律,页数增加 start也增加,start=(页数-1)*20

第一页:https://movie.douban.com/subject/35158160/reviews?start=0
第二页:https://movie.douban.com/subject/35158160/reviews?start=20
第三页:https://movie.douban.com/subject/35158160/reviews?start=40

二、获取影评

我们观察页面的影评,其中有很多的影评因为字数过多,所以被限制显示

在这里插入图片描述
现在我们通过抓包工具,点击展开按钮,看是否可以抓到数据,通过抓包后,我们抓到了一个名为full的数据包,观察后发现这就是完整的影评

在这里插入图片描述
现在我们分析这条数据包的url,很明显的其中的数据就是表示的这个影评的某个序号,我们可以通过先获取这串数据,然后就可以获取完整的影评

https://movie.douban.com/j/review/13364212/full

而这串数字就是下图

在这里插入图片描述

三、代码实现

首先我们写一个函数,用于获取完整影评的这串数据

def Get_Id(self,url):
    try:
        text=requests.get(url=url,headers=self.head).text
        html=etree.HTML(text)
        id_list=html.xpath('//div[@class="review-list  "]/div/@data-cid')
        self.Id_list.extend(id_list)
    except Exception as e:
        print("出现异常:",e)
        pass

再写一个函数,用于接受id获取评论并存储

def Parser_Data(self,id):
    try:
        url="https://movie.douban.com/j/review/%s/full"%(str(id))
        text=requests.get(url=url,headers=self.head).json()
        html = etree.HTML(text["html"])
        text = "".join(html.xpath("//text()")).replace("\n", "").replace("\t", "").replace(" ", "")
        with open("film_review.txt","a",encoding="utf-8") as f:
            f.write(text)
            f.write("\n")
    except Exception as e:
        print("出现异常:",e)
        pass

最后,还需要一个主函数,用于传递url给Get_id函数,调用所有的函数

def main(self):
    self.head={
        'User-Agent':'',
        'cookie':''
    }
    start_page=input("请输入起始页数:")
    end_page=input("请输入结束页数:")
    urls=[]
    for i in range(int(start_page),int(end_page)):
        url="https://movie.douban.com/subject/35158160/reviews?start=%d"%((i-1)*20)
        urls.append(url)
    self.Id_list = []
    for url in urls:
        self.Get_Id(url)
        sleep(2)
    for id in self.Id_list:
        self.Parser_Data(id)
        sleep(2)

四、词云

最后我们来编写,词云展示的代码

from wordcloud import WordCloud
import matplotlib.pyplot as plt
plt.rc('figure',figsize=(20,10),dpi=200)
font = r'C:\Windows\Fonts\simfang.ttf'
with open("film_review.txt",encoding="utf-8") as f:
    text=f.read().replace("\n","")
wc = WordCloud(font_path=font, background_color='White',width=1920,height=1080).generate("".join(text))
plt.imshow(wc)
plt.axis("off")
plt.savefig('D:\Desktop\词云.jpg')
plt.show()

最终生成的词云
在这里插入图片描述
我是没有看过这部电影的阿,但是从大家对这部电影的影评 上来看,用词最多的首先是我的姐姐这个电影名称,然后是重男轻女、姐姐、弟弟、长姐如母,其中还有一个次挺显眼的是 扶弟魔。好了现在 我大概能猜到剧情了,不是我喜欢的类型。

文中用的爬虫代码 可在公众号“阿虚学Python”中回复“豆瓣影评”获取,可直接修改请求头和电影id直接使用,如果你对爬虫感兴趣,可去我主页看看已经更新多个爬虫项目
在这里插入图片描述

谢谢大家的观看

标签:start,Python,text,self,爬虫,url,豆瓣,影评,id
来源: https://blog.csdn.net/weixin_47163937/article/details/115444912