豆瓣影评爬虫:cutecharts数据可视化看看大家对八佰的评价如何

时间:2020-8-29 作者:admin


一、前言

近期热播电影《八佰》,‘1937年淞沪会战的最后一役,“八百壮士”奉命坚守上海四行仓库,以少敌多顽强抵抗四天四夜。电影《八佰》由管虎导演,是亚洲首部全片使用IMAX摄影机拍摄的商业电影,将于2020年8月21日全国影院上映。’,豆瓣影评7.7分,今天我们用爬虫的方式,将豆瓣影评中的每位评价的星级爬取下来,最后再用cutecharts数据可视化,来看看这部电影是否值得观看。

二、分析网站

豆瓣影评部分,可以说是最基础的爬虫了,无任何反爬手段,我们需要的数据都在源代码之中,这里我通过xpath语法直接筛选出我们需要的数据内容:也就是下图的星级评分。豆瓣影评爬虫:cutecharts数据可视化看看大家对八佰的评价如何

三、cutecharts介绍

cutecharts是一个很可爱的 Python 手绘风格可视化神包,和 Matplotlib 、pyecharts 等常见的图表不同,使用这个包可以生成下面这种看起来像手绘的各种图表(如下图),在一些场景下使用效果可能会更好。豆瓣影评爬虫:cutecharts数据可视化看看大家对八佰的评价如何
cutecharts 的项目结构与 pyecharts 基本保持一致,拥有 pyecharts 的所有核心功能。但是整体更加小巧,代码更加精简。因此,本文选择cutecharts来进行数据的可视化。

三、编写代码

首先,需要我们的目标站点的网址和请求头,没有请求头获取不到数据。

 def __init__(self):
        self.headers = {
            'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36'
        }
        self.url = 'https://movie.douban.com/subject/26754233/reviews?rating=&start={}'

我这边爬取了一百页的星级评分,用for 循环的方式,生成需要爬取的网址。

    def main(self):
        for i in range(0,100):
            url = self.url.format(int(20*i))
            self.get_comment(url)

接下来,就是通过对网页的请求,并且用xpath进行解析,获取我们需要的数据。

  def get_comment(self,url):
        response = requests.get(url,headers=self.headers)
        time.sleep(random.random())
        res = response.text
        html = etree.HTML(res)
        lists  = html.xpath('//div[@class="review-list  "]//div[@class="main review-item"]')
        for list in lists:
            level = list.xpath('.//header[@class="main-hd"]/span[@class]/@title')
            if level:
                level = level[0]
            else:
                level = '无评分'
            dict = {
                '评分':level
            }
            print(dict)

因为有一部分人是没有给出星级评分的,所以这边会用“无评分”来填充没有评价的部分。之后将这些数据保存到本地(如下图),一共有两千条数据。豆瓣影评爬虫:cutecharts数据可视化看看大家对八佰的评价如何
到这边,爬虫的任务,我们已经做完了,还是很简单的嘛,下面就用cutecharts将数据可视化出来。
豆瓣影评爬虫:cutecharts数据可视化看看大家对八佰的评价如何
这边我就直接上代码了,只展示绘制饼状图的方法,如果有感兴趣的小伙伴,可以自行去找资料。

from cutecharts.charts import Pie


def pie_base() -> Pie:
    chart = Pie("Pie-基本示例")

    chart.set_options(labels=['推荐','力荐','无评分','还行','较差','很差'])
    chart.add_series(list(data['评分'].value_counts()))
    return chart


pie_base().render()

效果图如下

豆瓣影评爬虫:cutecharts数据可视化看看大家对八佰的评价如何

是不是很可爱?

从这张图里我们可以看出来,大部分人还是比较推荐去看这部电影的,综合豆瓣7.7的影评,可以知道这部电影还是值得我们去观看的。
豆瓣影评爬虫:cutecharts数据可视化看看大家对八佰的评价如何

四、总结

本文通过爬取豆瓣的影评星级,然后用一种可爱的数据可视化包,将结果通过可视化的方式呈现给大家,可以作为cutecharts和爬虫的简单案例给大家作为参考。

大家如果觉得文章写得还可以,点个赞再走吧,如果有想看的关于爬虫方面的案例,都可以私信或评论,可能下一篇文章就是你们想看到的,希望你们有所收获,一起进步。豆瓣影评爬虫:cutecharts数据可视化看看大家对八佰的评价如何

声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。