豆瓣影评爬虫:cutecharts数据可视化看看大家对八佰的评价如何
一、前言
近期热播电影《八佰》,‘1937年淞沪会战的最后一役,“八百壮士”奉命坚守上海四行仓库,以少敌多顽强抵抗四天四夜。电影《八佰》由管虎导演,是亚洲首部全片使用IMAX摄影机拍摄的商业电影,将于2020年8月21日全国影院上映。’,豆瓣影评7.7分,今天我们用爬虫的方式,将豆瓣影评中的每位评价的星级爬取下来,最后再用cutecharts数据可视化,来看看这部电影是否值得观看。
二、分析网站
豆瓣影评部分,可以说是最基础的爬虫了,无任何反爬手段,我们需要的数据都在源代码之中,这里我通过xpath语法直接筛选出我们需要的数据内容:也就是下图的星级评分。
三、cutecharts介绍
cutecharts是一个很可爱的 Python 手绘风格可视化神包,和 Matplotlib 、pyecharts 等常见的图表不同,使用这个包可以生成下面这种看起来像手绘的各种图表(如下图),在一些场景下使用效果可能会更好。
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将数据可视化出来。
这边我就直接上代码了,只展示绘制饼状图的方法,如果有感兴趣的小伙伴,可以自行去找资料。
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()
效果图如下
是不是很可爱?
从这张图里我们可以看出来,大部分人还是比较推荐去看这部电影的,综合豆瓣7.7的影评,可以知道这部电影还是值得我们去观看的。
四、总结
本文通过爬取豆瓣的影评星级,然后用一种可爱的数据可视化包,将结果通过可视化的方式呈现给大家,可以作为cutecharts和爬虫的简单案例给大家作为参考。
大家如果觉得文章写得还可以,点个赞再走吧,如果有想看的关于爬虫方面的案例,都可以私信或评论,可能下一篇文章就是你们想看到的,希望你们有所收获,一起进步。
本文地址:https://blog.csdn.net/shadowtalon/article/details/108267572