前言

利用Python实现豆瓣电影TOP250数据可视化。废话不多说。

让我们愉快地开始吧~

开发工具

Python版本: 3.6.4

相关模块:

pandas模块

pyecharts模块;

以及一些Python自带的模块。

环境搭建

安装Python并添加到环境变量,pip安装需要的相关模块即可。

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 Doubantop250Itemclass 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'] = titleitem['info'] = infoitem['score'] = scoreitem['people'] = peopleitem['words'] = wordsyield 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 scrapyclass 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编码。

数据可视化

电影上映年份分布

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

中外电影上映年份分布

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

中外电影评分情况

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

电影数TOP10

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

电影评分分布

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

评论人数TOP10

排名评分人数三维度

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

年份评分人数三维度

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

电影类型图

与之前的2018比较一下,发现榜单里「动作」片减少不少,其他差别不大

Python爬虫实战,pyecharts模块,Python实现豆瓣电影TOP250数据可视化相关推荐

  1. Python爬虫实战(一):爬取豆瓣电影top250排名

    先上代码 #coding=utf-8 import re import urllib.requestdef getHtml(url):page = urllib.request.urlopen(url ...

  2. python爬虫实例-运用requests抓取豆瓣电影TOP250(详解)

    目录 开发工具 目标 网页分析 正则匹配分析 代码实例 总结 开发工具 python版本: python-3.8.1-amd64 python开发工具: JetBrains PyCharm 2018. ...

  3. 跟随B站视频学Python爬虫过程(6):豆瓣电影TOP250并存Excel(使用urllib, bs, re, xlwt库)

    出于督促自己学习以及未来回顾和分享的目的,记录一下自己的学习过程. B站视频号:BV12E411A7ZQ ep15-25. 完成爬取信息,处理数据,保存到Excel.具体流程为: 1. 找到目标网页的 ...

  4. Python爬虫实战003:爬取豆瓣电影分类排行榜

    import requests import jsonif __name__ == '__main__':url = "https://movie.douban.com/j/chart/to ...

  5. python爬取豆瓣电影top250_Python爬虫实战(一):爬取豆瓣电影top250排名

    先上代码 #coding=utf-8 import re import urllib.request def getHtml(url): page = urllib.request.urlopen(u ...

  6. Python爬虫入门 | 7 分类爬取豆瓣电影,解决动态加载问题

      比如我们今天的案例,豆瓣电影分类页面.根本没有什么翻页,需要点击"加载更多"新的电影信息,前面的黑科技瞬间被秒--   又比如知乎关注的人列表页面:   我复制了其中两个人昵称 ...

  7. python爬虫(一)爬取豆瓣电影排名前50名电影的信息

    python爬虫(一)爬取豆瓣电影排名前50名电影的信息 在Python爬虫中,我们可以使用beautifulsoup对网页进行解析. 我们可以使用它来爬取豆瓣电影排名前50名的电影的详细信息,例如排 ...

  8. python爬取豆瓣电影top250并保存为xlsx_python抓取豆瓣电影Top250数据并写入Excel

    douban python抓取豆瓣电影Top250数据并写入Excel 1.将目标网站上的页面抓取下来 2.将抓取下来的数据根据一定的规则进行提取 create table `tb_movie`( i ...

  9. Python爬虫实战Pro | (1) 爬取猫眼电影Top100榜单

    在本篇博客中,我们将使用requests+正则表达式来爬取猫眼电影官网的TOP100电影榜单,获取每部电影的序号,片名,主演,上映日期,评分和封面等内容. 之前在Python爬虫实战(1)中我们曾爬取 ...

最新文章

  1. 薛其坤院士对话马斯克:下一个颠覆性创新是什么?
  2. 从生态、业绩角度分析芯片行业
  3. 百度超级链XChain(3)平台特点
  4. java Enumset
  5. 随笔记录(2019.7.10)
  6. Spring配置文件中bean标签的scope属性
  7. easyui datagrid 中怎么选中所有页面的数据_学会这5个Excel中常用技巧,可以准时下班去摆摊了...
  8. 在recovery模式下命令控制手机_安卓手机开机密码忘记,解锁教程
  9. 2.10.PHP7.1 狐教程-【PHP 函数】
  10. 手机号检测性别原理分析 微信男女 抖音ID检测原理
  11. 国美云运维自动化实践
  12. Android Performance之工具篇(1)-systrace
  13. 夯实数据库根科技,提升企业数智化转型的“人效”和“能效” | 数据猿
  14. openwrt开启wifi功能
  15. China Joy 还没看够?2020 谷歌游戏出海峰会带来更多精彩!
  16. 使用Zend studio+WAMP来调试Wordpress后台的PHP程序的一些非常关键的信息(原创)
  17. c++在文件中提取数字或字母
  18. 【解决】正在连接 raw.githubusercontent.com 失败:拒绝连接
  19. deepin tim(wine)无法安装_Deepin 系统安装及设置教程
  20. [附源码]java毕业设计电子病历信息管理系统

热门文章

  1. 周口科技学院计算机怎么样,周口科技职业学院-周口科技职业学院怎么样啊? 爱问知识人...
  2. 35 岁以上Android开发者都去哪里了?,三面蚂蚁核心金融部
  3. nc、ss、ps命令
  4. ftp上位机编程c语言,基于USB芯片CY7C68013A的上位机C++程序
  5. CY7C68013与FPGA接口的Verilog_HDL实现
  6. 微信小程序调用高德,腾讯地图app
  7. DevOps整合Jenkins+k8s
  8. 无人机管控平台,推动电力巡检管理水平提升
  9. 【转】Unix的缺陷
  10. 解决 apache启动错误httpd:Could not reliably determinethe server's fully qualified domain