豆瓣电影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填坑吧!

Python数据可视化:豆瓣电影TOP250相关推荐

  1. 数据可视化豆瓣电影 TOP250

    我平时喜欢看电影,也会习惯性参考豆瓣电影评分,而豆瓣对于爬虫爱好者是很友好的,没有太多反爬措施,对新手是很友好的. 本文将爬取豆瓣电影 TOP 250榜单的数据进行可视化,主要用了 Beautiful ...

  2. Python爬取、存储、分析、可视化豆瓣电影Top250

    Python爬取.存储.分析.可视化豆瓣电影Top250 网站链接: https://movie.douban.com/top250 @文章目录 前言 一.python爬取目标数据,并写入csv文件 ...

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

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

  4. 利用python爬取豆瓣电影top250

    利用python爬取豆瓣电影top250: 注:本内容只是作为个人学习记录 1.业务分析 进入网页https://movie.douban.com/top250 可以看见每部电影都呈现在眼前,点击电影 ...

  5. Python爬取豆瓣电影top250的电影信息

    Python爬取豆瓣电影top250的电影信息 前言 一.简介 二.实例源码展示 小结 前言 相信很多小伙伴在学习网络爬虫时,老师们会举一些实例案例讲解爬虫知识,本文介绍的就是经典爬虫实际案例–爬取豆 ...

  6. 源码大公开!Python爬取豆瓣电影Top250源代码,赶紧收藏!

    哈喽~大家好,我是恰恰.不知道是不是有很多小伙伴跟我一样,很喜欢看电影,尤其是那种别人推荐的豆瓣高分电影,所以学Python就有一个好处,用Python爬取豆瓣电影那是分分钟的事,再也不用因为有些电影 ...

  7. python爬取豆瓣电影top250的代码_Python爬虫——爬取豆瓣电影Top250代码实例

    利用python爬取豆瓣电影Top250的相关信息,包括电影详情链接,图片链接,影片中文名,影片外国名,评分,评价数,概况,导演,主演,年份,地区,类别这12项内容,然后将爬取的信息写入Excel表中 ...

  8. python爬虫实战—豆瓣电影TOP250

    系列文章目录 python爬虫实战 前言 本文主要用python爬取豆瓣电影TOP250数据并将爬取到的数据保存到MySQL中.同时也介绍了该项目中遇到的问题. 爬取内容:电影名称,电影别名,导演,主 ...

  9. python爬取豆瓣电影top250_利用python爬取豆瓣电影Top250,并把数据放入MySQL数据库...

    在学习了python基础后,一心想着快速入门爬虫,因为我就是为爬虫而学的python,所以就找了这个豆瓣电影来爬取.好了,废话不多说,进入正题 1.找到网页并分析网页结构 首先进入豆瓣电影Top250 ...

  10. python爬取豆瓣电影top250_用Python爬取豆瓣电影TOP250分析

    / 01 / Scrapy 之前了解了pyspider框架的使用,但是就它而言,只能应用于一些简单的爬取. 对于反爬程度高的网站,它就显得力不从心. 那么就轮到Scrapy上场了,目前Python中使 ...

最新文章

  1. [转]C# WInForm 无框窗体移动
  2. JS 计算日期天数差
  3. python在工作中怎么用_如何用python在工作中“偷懒”
  4. KubeCon+CloudNativeCon首登中国,时速云受邀发表主题演讲
  5. .NET、C#和ASP.NET三者之间的区别与联系
  6. android汉字转url,Android将文本中的URL转换为超链接工具类(原文本有超链接标签也适用)...
  7. ubuntu18.04安装mysql8.0
  8. Undertow 实现反向代理
  9. [英语]工作邮件中超实用的100句英文
  10. Coursera机器学习week11 笔记
  11. 在asp中实现自动缩放图片(推荐)
  12. 底部标签页+ViewPager+Fragment
  13. mysql启动服务报Found option without preceding group in config file
  14. 软件测试周刊(第30期):专注 力量 敏捷 协作
  15. 无线网络设置的dns服务器,DNS怎么设置才能上网
  16. 网络舆情信息整理分析怎么有效做好的方法
  17. 量化投资学习——股指期货理论价格说明
  18. Nginx中请求大小的限制的设置
  19. 汇聚音视频新能量 探索行业新蓝海
  20. esp8266连接中智云平台

热门文章

  1. 申宝简述四类题材受青睐
  2. 通过Ajax批量上传图片(springboot)
  3. 判断元素16种方法expected_conditions
  4. 缓存服务器设计与实现(五)
  5. 产品签注(GPG)密钥
  6. C语言循环与判断语句案例:出租车打表计价问题
  7. Dynamically load executable
  8. 多步相移法获取绝对相位(多频外差法)
  9. MySQL慢查询配置,及解决相关问题
  10. 数据库巡检相关内容---1