目录

网络爬虫之:Scrapy使用详解(二)-scrapy小爬虫诞生记

一、前言:

  • 前面一章我们讲述了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…..如此循环 http://upload-images.jianshu.io/upload_images/1811893-a5793def15c2260a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240

  • 引擎(Scrapy Engine),用来处理整个系统的数据流处理,触发事务。

  • 调度器(Scheduler),用来接受引擎发过来的请求,压入队列中,并在引擎再次请求的时候返回。

  • 下载器(Downloader),用于下载网页内容,并将网页内容返回给蜘蛛。

  • 蜘蛛(Spiders),蜘蛛是主要干活的,用它来制订特定域名或网页的解析规则。编写用于分析response并提取item(即获取到的item)或额外跟进的URL的类。 每个spider负责处理一个特定(或一些)网站。

  • 项目管道(Item Pipeline),负责处理有蜘蛛从网页中抽取的项目,他的主要任务是清洗、验证和存储数据。当页面被蜘蛛解析后,将被发送到项目管道,并经过几个特定的次序处理数据。

  • 下载器中间件(Downloader Middlewares),位于Scrapy引擎和下载器之间的钩子框架,主要是处理Scrapy引擎与下载器之间的请求及响应。

  • 蜘蛛中间件(Spider Middlewares),介于Scrapy引擎和蜘蛛之间的钩子框架,主要工作是处理蜘蛛的响应输入和请求输出。

  • 调度中间件(Scheduler Middlewares),介于Scrapy引擎和调度之间的中间件,从Scrapy引擎发送到调度的请求和响应。