豆瓣电影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编码。

/ 02 / 数据可视化

01 电影上映年份分布

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

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

02 中外电影上映年份分布

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

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

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

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

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

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

03 中外电影评分情况

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

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

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

04 电影数TOP10

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

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

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

05 电影评分分布

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

06 评论人数TOP10

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

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

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

07 排名评分人数三维度

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

08 年份评分人数三维度

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

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

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

09 电影类型图

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

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

/ 03 / 总结

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

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

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

文末点个赞,比心!!!

···  END  ···

python数据可视化之美 豆瓣_Python数据可视化:豆瓣电影TOP250相关推荐

  1. python折线图怎么添加数值_Python数据可视化:如何创建曲线图

    一图胜千言,使用Python的matplotlib库,可以快速创建高质量的图形. 用matplotlib生成基本图形非常简单,只需要几行代码,但要创建复杂的图表,需要调用更多的命令和反复试验,这要求用 ...

  2. python可视化编程实战代码_Python数据可视化编程实战——导入数据

    1.从csv文件导入数据 原理:with语句打开文件并绑定到对象f.不必担心在操作完资源后去关闭数据文件,with的上下文管理器会帮助处理.然后,csv.reader()方法返回reader对象,通过 ...

  3. python作中国地图背景气泡图_Python数据可视化:香港地图、房价可视化,绘制气泡图...

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章来源于DataCharm ,作者宁海涛 前言 今天的推文教程使用geopandas进行空间 ...

  4. python panda 库箱线图_Python数据可视化:箱线图多种库画法

    概念 箱线图通过数据的四分位数来展示数据的分布情况.例如:数据的中心位置,数据间的离散程度,是否有异常值等. 把数据从小到大进行排列并等分成四份,第一分位数(Q1),第二分位数(Q2)和第三分位数(Q ...

  5. python制作股票图表怎么看_Python 数据可视化实战:使用 PyQt5 和 Echarts 打造股票数据看板...

    在一篇论文中,最吸引审稿人目光的莫过于枯燥的文字间精美的图表 在一份项目路演 ppt 中,酷炫的财务报表往往是打动投资人的最后一剂强心剂 作为数据分析最后也是最直接的一环,数据可视化的重要性不言而喻 ...

  6. python绘制不带颜色曲线图_Python数据可视化库-Matplotlib——折线图,子图绘制

    # coding:utf-8 import pandas as pd import numpy as np from matplotlib import pylab as plt # 导入数据可视化库 ...

  7. python数据清理的实践总结_python 数据的清理行为实例详解

    python 数据的清理行为实例详解 数据清洗主要是指填充缺失数据,消除噪声数据等操作,主要还是通过分析"脏数据"产生的原因和存在形式,利用现有的数据挖掘手段去清洗"脏数 ...

  8. python数据可视化库 动态的_Python数据可视化:Pandas库,只要一行代码就能实现...

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章一级AI入门学习 ,作者小伍哥 刚接触Python的新手.小白,可以复制下面的链接去免费观 ...

  9. python数据可视化库 动态的_Python数据可视化:Pandas库,要是一行代码就能完成...

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章一级AI入门学习 ,作者小伍哥 刚接触Python的新手.小白,可以复制下面的链接去免费观 ...

  10. python数据纺购的方法_python 数据可视化之pyecharts库

    Pyecharts 简介 Echarts是一个由百度开源的数据可视化工具,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可.而Python是一门富有表达力的语言,很适合用于数据处理.当数据分 ...

最新文章

  1. 在maven项目中使用Junit进行单元测试
  2. vc++中几个常用的数学函数
  3. 守护进程的创建方法和步骤
  4. 数据结构学习-带头结点的单链表就地逆置
  5. 大型WEB架构概况(笔记整理)一
  6. Loadruner压数据库oracle,LoadRunner连接Oracle数据库(转)
  7. python面试题总结(一)字符串反转,写取指定数函数
  8. Spring表达式语言使用
  9. 注解的原理又是怎么一回事
  10. HDFS QJM机制分析
  11. Linux 命令(110)—— help 命令(builtin)
  12. SpringBoot集成gRPC微服务工程搭建实践
  13. Excel快捷键总结
  14. SYSAUX表空间占用过大情况下的处理(AWR信息过多)
  15. 开发了一款开虚拟店通过百度网盘卖成千上万本电子书虚拟商品自动发货机器人软件助手
  16. vue移动端的真机测试
  17. 京东金融云发布了,这和人工智能有什么关系?
  18. -eq、-ne、-gt、-ge、-lt、-le英文意思
  19. NMAKE简要教程1:环境配置
  20. 【Redis连接超时】io.lettuce.core.RedisConnectionException: Unable to connect to 192.168.x.x:7000

热门文章

  1. Transport level information does not match with SOAP Message namespace URI错误的理解
  2. PHP的图片等比缩放
  3. css absolute relative 定位
  4. 波动速读入门训练(含黄卡、曼陀螺使用方法)提供卡片
  5. 【转】cron表达式详解
  6. 为何区块链能成为金融行业的香饽饽?只因这5个关键因素!
  7. 云上直播性能优化及测试方案详解
  8. 打开大数据研究的潘多拉魔盒
  9. php 5.4中php-fpm 的重启、终止操作命令
  10. yii2组件之多图上传插件FileInput的详细使用