阅读908 返回首页    go Python


楚江数据:Python爬取豆瓣热门电影信息

万事开头难,知乎专栏申请下来一段时间了,但一直懒癌拖着没写,拖了又拖,终于在一个阴雨绵绵的周六的晚上提笔开始了第一篇爬虫文章。

首先爬虫是啥,爬虫无非是用程序模拟人在浏览器上的行为,抓取网络信息用于分析,用爬虫的最大好处是能够批量、自动化地获取数据和处理信息。例如我们可以通过抓取淘宝、天猫、京东等电商网站的销量及评论数据,对各种商品销量及用户消费场景进行分析;在大众点评、美团等消费类网站抓取店面类信息获取用户的消费习惯及评价;在拉钩、智联招聘等人才招聘网站抓取各大城市的岗位需求和薪资水平….

当然你在浏览器上无法看到的信息爬虫一般也是无法抓取的。所以不要问爬虫能不能破解别人的登录密码,能不能获取电商网站的后台数据,爬虫不是黑客,希望理解。

这篇文章主要介绍使用Python爬取豆瓣上热门电影的信息,包括电影名称、海报、评分等信息。在开始介绍本项目前,先简单介绍下网上的信息是如何被“爬”下来的。

我们看到的网页都是用HTML+CSS+JS等语言写出,而页面中加载文字、图片、视频等元素也是通过嵌入到超文本标记语言中展现。我们可以在打开一个网页后通过键盘上F12键或单击鼠标右键选择“查看源文件”查看该网页的源码,我们想要的抓取的文字、图片、视频等信息也都嵌入在该超文本标记语言中。见图:

接下来,我们开始正式介绍本项目,Python爬取豆瓣热门电影:

1、 首先准备项目开发环境

安装lxml、Scrapy、urllib、json等关键库文件

pip install lxml pip install Scrapy pip install urllib pip install json

2、 构建整体思路

本次爬虫使用scrapy框架,scrapy中定义了数据的请求、返回、调度、保存、持久化等行为,通过调用scrapy大大简化了人为编程量。

执行:scrapy startproject tutorial,安装好scrapy后的文件系统是这样:

我们只需重写dmoz_spider.py文件即可。

3、 分析网页

开始动手时一直抓不到豆瓣上电影的信息,掉在在坑里冥思苦想 + 各种搜索学习后发现豆瓣上有关电影的信息都是采用ajax方式加载到HTML中,于是在Network下找到加载ajax的链接,将该链接作为请求地址。

4、动手编程

第一步:先定义请求网页原址:

name='douban'allowed_domains=["douban.com"]start_list=[]foriinrange(1,14):url='https://movie.douban.com/j/search_subjects?type=movie&tag=%E7%83%AD%E9%97%A8&sort=recommend&page_limit=20&page_start='+str(i*20)start_list.append(url)start_urls=start_list# 定义start_urls为一个存储链接的列表

第二步:重写请求头文件:

def start_requests(self): user_agent = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.22 Safari/537.36 SE 2.X MetaSr 1.0' headers = {'User-Agent': user_agent} for url in self.start_urls: yield scrapy.Request(url=url, headers=headers, method='GET', callback=self.parse)

第三步:在获取的网页源码中提取信息:

def parse(self, response): hxs = response.body.decode('utf-8') hjson = json.loads(hxs) # 字典 for lis in hjson['subjects']: item = Tutorial2Item() # 实例化类 item["info"] = lis['url'] item["pic"] = lis['cover'] item["score"] = lis['rate'] item["title"] = lis['title'] filename = item["title"] + '_' + item["score"] + '分' + '.jpg' urllib.request.urlretrieve(item["pic"], filename)

5、运行查看

我们在cmd下运行该文件:

然后可在目标文件夹下看到同步下载的热门电影信息:多次调试后bingo

——————————分割线——————————

说了那么多,我们为啥要从网上爬数据。回答这个问题首先要回答“大数据”时代,数据从何而来?总结来看,数据主要来自以下几个方面:1、企业自己产生的数据:大型互联网公司拥有海量用户数据当然具有天然优势,有数据意识的企业也正逐步积累自己的数据;2、购买数据:可在数据堂、贵阳大数据交易所等平台上购买各类、各行业数据,当然价格不菲你懂的;3、政府/机构公开数据:公开数据实在是有限啊;4、爬取网络数据:想获取海量、丰富、有效的数据,自己动手丰衣足食。——人生苦短,我用Python

【楚江数据】团队提供网站、手机APP(包括电商、社交网站、公众号、论坛及客户提供的其他类型)爬虫定制开发和数据(文本、图片、电话邮箱、文档等)批量采集服务。不用学编程,不用写代码,我们直接交付采集好的数据或者编写好的程序。

转载知乎;

最后更新:2017-10-08 18:30:36

  上一篇:go Python 为何能坐稳 AI 时代头牌语言?
  下一篇:go python入门之九九乘法表