一、前言:
- 前面一章我们讲述了Scrapy爬虫安装的的过程以及独立空间的创建。
- 本次我们的目标是没有蛀牙!
- 本次我们的目标是没有蛀牙!
- 本次我们的目标是没有蛀牙!
- 好吧,不要打我,我们的目标是了解scrapy项目的结构及通过一个小爬虫来验证其到底有多好用!
二、scrapy项目结构
首先,我们先执行scrapy命令创建一个scrapy工程,看下工程都包裹哪几部分
Ok,我们创建个工程名为scrapydemo的项目,cd到你喜欢的目录下,然后执行该指令,如果你想在virtualenv开发环境上创建,记得先进入virtualenv的环境哦,还不清楚的可以点击Scrapy使用详解(一)
scrapy startproject scrapydemo
执行完之后,你会看到如下的目录结构
scrapydemo/ scrapy.cfg scrapydemo/ __init__.py items.py pipelines.py settings.py spiders/ __init__.py
文件作用如下: 1、scrapy.cfg 项目配置文件 2、scrapydemo/ 目录下存放的就是我们工程相关的python代码文件,一般代码都在里面了 3、items.py 定义了帶抓取的数据模型,可以理解为java 里面的数据bean 4、pipelines.py 负责处理scrapy爬取的数据,我们下载解析了目标页面之后,数据就会被送往pipelines进行处理,pipelines.py文件中def process_item方法来接收处理数据 5、settings.py 爬虫的配置文件,如:用户代理、延迟爬取等配置信息就是在这里面配置了 6、spiders/ 该目录就是我们实际编写代码的目录了
三、创建爬虫
OK,结构我们大体了解了,接下来我们用scrapy提供的模版生成一个爬取拉钩网的模版爬虫看下 scrapy genspider spiderLagou https://www.lagou.com --template=crawl
哈哈,网上收集的图,做了点小加工,scrapy的爬取流程如下图所示:1-》2-》3-》4-》1.....如此循环
引擎(Scrapy Engine),用来处理整个系统的数据流处理,触发事务。
调度器(Scheduler),用来接受引擎发过来的请求,压入队列中,并在引擎再次请求的时候返回。
下载器(Downloader),用于下载网页内容,并将网页内容返回给蜘蛛。
蜘蛛(Spiders),蜘蛛是主要干活的,用它来制订特定域名或网页的解析规则。编写用于分析response并提取item(即获取到的item)或额外跟进的URL的类。 每个spider负责处理一个特定(或一些)网站。
项目管道(Item Pipeline),负责处理有蜘蛛从网页中抽取的项目,他的主要任务是清洗、验证和存储数据。当页面被蜘蛛解析后,将被发送到项目管道,并经过几个特定的次序处理数据。
下载器中间件(Downloader Middlewares),位于Scrapy引擎和下载器之间的钩子框架,主要是处理Scrapy引擎与下载器之间的请求及响应。
蜘蛛中间件(Spider Middlewares),介于Scrapy引擎和蜘蛛之间的钩子框架,主要工作是处理蜘蛛的响应输入和请求输出。
调度中间件(Scheduler Middlewares),介于Scrapy引擎和调度之间的中间件,从Scrapy引擎发送到调度的请求和响应。