Python数据可视化:豆瓣电影TOP250

栏目: 编程工具 · 发布时间: 6年前

作者:法纳斯特,Python爱好者,专注爬虫,数据分析及可视化

微信公众号:法纳斯特(ID: walker398)

豆瓣电影TOP250,对于众多爬虫爱好者,应该并不陌生。

很多人都会以此作为第一个练手的小项目。

当然这也多亏了豆瓣的包容,没有加以太多的反爬措施,对新手比较友好。

本期通过Scrapy框架,对豆瓣电影TOP250信息进行爬取。

同时对获取的数据进行可视化分析,给大家带来一个不一样的TOP250。

/ 01 / Scrapy

之前了解了pyspider框架的使用,但是就它而言,只能应用于一些简单的爬取。

对于反爬程度高的网站,它就显得力不从心。

那么就轮到Scrapy上场了,目前 Python 中使用最广泛的爬虫框架。

当然目前我学习的都是简单爬虫,上述内容都是道听途说,并不是切身体会。

Scrapy的安装相对复杂,依赖的库较多。

不过通过度娘,最后我是成功安装了的。放在C盘,如今我的C盘要爆炸。

首先任意文件夹下命令行运行scrapy startproject doubanTop250,创建一个名为doubanTop250的文件夹。

然后在文件夹下的py文件中改写程序。

进入文件夹里,命令行运行scrapy genspider douban movie.douban.com/top250。

最后会生成一个douban.py文件,Scrapy用它来从网页里抓取内容,并解析抓取结果。

最终修改程序如下。

import scrapy from scrapy import Spider from doubanTop250.items import Doubantop250Item class DoubanSpider(scrapy.Spider):     name = 'douban'     allowed_domains = ['douban.com']     start_urls = ['https://movie.douban.com/top250/']     def parse(self, response):         lis = response.css('.info')         for li in lis:             item = Doubantop250Item()             # 利用CSS选择器获取信息             name = li.css('.hd span::text').extract()             title = ''.join(name)             info = li.css('p::text').extract()[1].replace('\n', '').strip()             score = li.css('.rating_num::text').extract_first()             people = li.css('.star span::text').extract()[1]             words = li.css('.inq::text').extract_first()             # 生成字典             item['title'] = title             item['info'] = info             item['score'] = score             item['people'] = people             item['words'] = words             yield item         # 获取下一页链接,并进入下一页         next = response.css('.next a::attr(href)').extract_first()         if next:             url = response.urljoin(next)             yield scrapy.Request(url=url, callback=self.parse)         pass

生成的items.py文件,是保存爬取数据的容器,代码修改如下。

import scrapy class Doubantop250Item(scrapy.Item):     # define the fields for your item here like:     # name = scrapy.Field()     title = scrapy.Field()     info = scrapy.Field()     score = scrapy.Field()     people = scrapy.Field()     words = scrapy.Field()     pass

在这个之后,还需要在settings.py文件添加用户代理和请求延时。

最后在douban.py所在文件夹下打开命令行,输入scrapy crawl douban。

命令行就会显示获取的结果啦!!!

这里豆瓣的信息有Unicode编码,我也不知为何要在一个网页里设置两种编码。

在当前文件夹命令行运行scrapy crawl douban -o douban.csv,即可输出csv文件。

由于在处理的时候没有去除空格,造成有两种编码存在,无法通过Excel查看。

这里就贴一个文本文档,后续会在数据可视化里去除Unicode编码。

Python数据可视化:豆瓣电影TOP250

/ 02 / 数据可视化

01 电影上映年份分布

Python数据可视化:豆瓣电影TOP250

这里可以看出豆瓣电影TOP250里,电影的上映年份,多分布于80年代以后。

其中有好几年是在10部及以上的。

02 中外电影上映年份分布

Python数据可视化:豆瓣电影TOP250

明显感受到了国产电影和国外电影的差距,90年代还行,还能过过招。

越往后,国产电影就基本就没有上榜的。

每年电影出得倒是不少,真正质量好的又能有几部呢?

今天刚好看到新周刊的推文「2018年10大烂片」。

影评人周黎明:如果一部影片既没有表达,也没有最基本的技术水准,那应该是最彻底的烂片。

讲道理,国产烂片还真不少...

03 中外电影评分情况

Python数据可视化:豆瓣电影TOP250

通过上张图,我们知道国外电影是占据了榜单的大多数。

不过这里评分情况,倒是倍感欣慰,说明国产电影中的精品也不错,和国外电影并没有太大的差距。

只是这些影片貌似有点老了...

04 电影数TOP10

Python数据可视化:豆瓣电影TOP250

美国遥遥领先,中国位居其中。

在我的那篇「2018年电影分析」中,中国目前可是个电影高产国,结果呢...

香港都比内地的多。这里不得不佩服90,00年代的香港影业,确实很强!

05 电影评分分布

大多分布于「8.5」到「9.2」之间。最低「8.3」,最高「9.6」。

06 评论人数TOP10

让我们来看看人气最高的有哪些影片,你又看过几部呢?

记得上学的时候,时间多。我根据IMDbTOP250,看了榜上大部分的电影。

于是乎豆瓣电影这个TOP10,我也全看过了,都是一些有故事的电影。

07 排名评分人数三维度

总的来说,排名越靠前,评价人数越多,并且分数也越高。

08 年份评分人数三维度

这里就更加明显看出榜单上电影分布情况,大部分都是80年代以后的。

在90年代有个小高峰,不仅评价高,人气还高。

往后的数据就相对平稳,变化不是太大。

09 电影类型图

Python数据可视化:豆瓣电影TOP250

和我之前「2018年电影分析」比较一下,发现榜单里「动作」片减少不少,其他差别不大。

这算不算是间接说明国人更喜欢视觉上的东西呢?

/ 03 / 总结

本次只是一个简单的Scrapy操作,目的就是简单了解一下它的使用。

以后或许会更深入去学习Scrapy框架,所以慢慢等小F填坑吧!

阅读原文,代码都放「GitHub」上头了。

点击阅读原文,跳转至Github

文末点个赞,比心!!!

Python爱好者社区历史文章大合集

Python爱好者社区历史文章列表(每周append更新一次)

福利:文末扫码立刻关注公众号, “Python爱好者社区” ,开始学习Python课程:

关注后在公众号内回复 课程 即可获取

小编的转行入职数据科学(数据分析挖掘/机器学习方向) 【最新免费】

小编的Python入门免费视频课程 !!!

小编的Python快速上手matplotlib可视化库!!!

崔老师 爬虫实战案例 免费学习视频。

陈老师 数据分析报告制作 免费学习视频。

玩转大数据分析!Spark2.X+Python 精华实战课程 免费学习视频。

Python数据可视化:豆瓣电影TOP250

本文由Python爱好者社区 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。

转载、引用前需联系作者,并署名作者且注明文章出处。

本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。


以上所述就是小编给大家介绍的《Python数据可视化:豆瓣电影TOP250》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

HTML5

HTML5

Matthew David / Focal Press / 2010-07-29 / USD 39.95

Implement the powerful new multimedia and interactive capabilities offered by HTML5, including style control tools, illustration tools, video, audio, and rich media solutions. Understand how HTML5 is ......一起来看看 《HTML5》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

随机密码生成器
随机密码生成器

多种字符组合密码

URL 编码/解码
URL 编码/解码

URL 编码/解码