zoukankan      html  css  js  c++  java
  • 网络爬虫之: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.....如此循环 scrapy.png

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

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

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

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

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

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

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

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

    相关阅读

  • 相关阅读:
    【Linux常用命令】 cat
    【Linux常用命令】 chmod
    【2012.4.22】北京植物园&卧佛寺
    【Linux常用命令】 重定向输出 > 和 >>
    一些话
    linux下查看用户个数和具体名字
    【Linux常用命令】 ls
    Ethernet frame
    防止修改类和方法
    redis数据批量导入导出
  • 原文地址:https://www.cnblogs.com/cnblogzaizai/p/11570606.html
Copyright © 2011-2022 走看看