首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

和高大上的框架一起爬爬爬!——Scrapy详解

1、框架安装

如果使用python自带的pip工具安装,会很麻烦,所以这里采用了conda方式。在annocanda基础上进行安装,先进入命令行,直接敲命令即可:

conda install scrapy

需要注意的是,可能需要管理员权限。

2、框架的基本使用

这里我们使用scrapy官方推荐的网页进行实战熟悉框架

网址如下:

2.1 基本项目创建

创建一个简单的程序目录结果

scrapy startproject quotetuorial

进入到项目中,创建一个spider

cd quotetuorial

导入到pycharm就可以继续编写代码。

2.2 框架的基本结构

scrapy.cfg 项目部署文件

items.py 项目的Item文件

piplines.py 项目中的Piplines文件

settings.py 项目的配置文件

spiders 放置spider代码的目录

2.3 简单运行结果展示

先运行一下爬虫,会在控制台打印出一些调试和输出信息,用来告诉大家爬虫已经启动。

2.4 爬取数据

2.4.1 网页结构分析

查看一下网页结构,该网站是记录名人名言的网站,每一条名人名言分为内容,作者和标签三个部分,同时,底部还有下一页的链接。

所以,我们先对一个页面的所有列表内容进行爬取,爬取结束后再根据下一页的链接跳转到下一页继续爬取,一直往复直到全部信息爬取完毕。

查看名人名言的网页代码如下:

可以看出,每一条名人名言均包裹在quote的div当中,继续看一条名人名言代码:

很清晰和简单的网页结构,想获取text,author和tag都仅仅需要根据classname就可以了。

2.4.2 网页结构解析

接下来,我们就来在QuotesSpider中编写解析网页的代码:

在控制台输入:

scrapy crawl quotes

看到我们解析的第一页的名人名言已经出现在控制台

2.4.3 将信息存入item

接下来,我们需要把解析的名人名言保存到本地,这时候需要用到item类。

我们在items.py中加入item类

重新编写parse方法,将item引入到spider中:

运行爬虫,可以看到在控制台会打印爬虫爬取的信息。

2.4.4 分页处理

首先查看next超链接,发现url地址在href中,所以直接提取出来就可以了。

代码如下:

2.4.5 数据存储

网页解析部分全部完成之后,我们需要把解析的部分存储下来。

这里将会使用管道piplines.py类。

Item Pipline主要有以下典型应用:

清理HTML数据

验证爬取的数据合法性,检查Item是否包含了某些字段

查重并丢弃

将爬取结果保存到文件或者数据库中

每一个Item Pipline必须实现process_item方法,这个方法必须返回一个Item或者一个DropItem异常,被丢弃的Item将不会被后面的Item Pipline组件所继承。

TextPipeline类主要是对text中长度过长做了截取操作。

MongoPipeline主要将解析后的item存储到mongoDB。

mongoDB的下载看这里(http://dl.mongodb.org/dl/win32/x86_64)。

安装看这里(https://jingyan.baidu.com/article/d5c4b52bef7268da560dc5f8.html)

这里需要说明的是,crawler的settings是从获取mongoDB的配置项,所以我们需要在settings.py中添加配置项

这时就可以获取相应的配置了。但是pip类还无法使用,还是需要在settings.py中将两个pip进行配置,激活匹配pipline如下:

这里的300和400代表了pip的排序序号。

2.4.6 运行程序

执行命令,让程序运行

scrapy crawl quotes

执行结束,我们可以到mongoDB中查看结果。

3 尾

简单的scrapy就介绍到这里,如果想深入的学习该框架,可以查看其它的网络资源《Python爬虫开发与项目实战》(https://book.douban.com/subject/27061630/)本书有个缺点是使用的python2.7

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180415G16YHG00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券