2019-06-21爬虫框架

  1. 爬虫框架:
  • scrapy
  • pyspider
  • crawley

scrapy框架介绍

  • https://doc.scrapy.org/en/latest/
  • http://scrapy-chs.readthedocs.io/zh_CN/latest/index.html
    scrapy概述
    Scrapy五大基本构成:
    Scrapy框架主要由五大组件组成,它们分别是调度器 (Scheduler)、下载器(Downloader)、爬虫(Spider)和实体管道(Item Pipeline)、Scrapy引擎(Scrapy Engine)。下面我们分别介绍各个组件的作用。
    Scrapy Engine:神经中枢,大脑,核心
    Scrapy引擎是整个框架的核心.它用来控制调试器、下载器、爬虫。实际上,引擎相当于计算机的CPU,它控制着整个流程。
    Scheduter调度器:引擎发来的request请求,调度器需要处理,然后交换引擎,
    调度器,说白了把它假设成为一个URL(抓取网页的网址或者说是链接)的优先队列,由它来决定下一个要抓取的网址是 什么,同时去除重复的网址(不做无用功)。用户可以自己的需求定制调度器。
    Downloader下载器:把引擎发来的requests发出请求,得到response
    下载器,是所有组件中负担最大的,它用于高速地下载网络上的资源。Scrapy的下载器代码不会太复杂,但效率高,主 要的原因是Scrapy下载器是建立在twisted这个高效的异步模型上的(其实整个框架都在建立在这个模型上的)。
    Spider爬虫:负责把下载器得到的网页/结果进行分解,分解成数据+链接
    爬虫,是用户最关心的部份。用户定制自己的爬虫,用于从特定的网页中提取自己需要的信息,即所谓的实体(Item)。 用户也可以从中提取出链接,让Scrapy继续抓取下一个页面。
    Item Pipeline管理:详细处理item
    实体管道,用于处理爬虫提取的实体。主要的功能是持久化实体、验证实体的有效性、清除不需要的信息。
    DownloaderMiddleware下载中心件:自定义下载的功能扩展组件
    SpiderMiddleware爬虫中间件:对spider进行功能扩展
2019-06-21爬虫框架_第1张图片
image.png

Scrapy请求发出去的整个流程

Scrapy运行时,请求发出去的整个流程大概如下:

1.首先爬虫将需要发送请求的url(requests)经引擎交给调度器;

2.排序处理后,经ScrapyEngine,DownloaderMiddlewares(有User_Agent, Proxy代理)交给Downloader;

3.Downloader向互联网发送请求,并接收下载响应.将响应经ScrapyEngine,可选交给Spiders;

4.Spiders处理response,提取数据并将数据经ScrapyEngine交给ItemPipeline保存;

5.提取url重新经ScrapyEngine交给Scheduler进行下一个循环。直到无Url请求程序停止结束。

爬虫项目大概流程:
新建项目:scrapy startproject XXX
明确需要目标/产出:编写item.py
制作爬虫:地址 spider/xxxspider.py
存储内容:pipelines.py

ItemPipeline
-对应的是pipelines文件
爬出提取出数据存入item后。item中 保存的数据需要进一步处理,比如清洗,去重,存储等
pipeline需要处理process_item函数
process_item:
spider提取出来的item作为参数传入,同时传入的参数还有spider
此方法必须实现
必须返回一个item对象,被丢弃的item不会被之后的pipeline处理

  • _init_:构造函数,进行一些必要的参数初始化
  • open_spider(spider)
    spider对象被开启时被调用
  • close_spider(spider)
    spider对象被关闭时被调用
  • Spider
    对应的是文件夹spider下的文件
    _init_:初始化爬虫名称,start_urls列表
    start_requests:生成Reaquests对象交给Scrapy下载并返回response
    parse:根据返回的response解析出对应的item。item自动进入pipeline,如果需要,解析出url,url自动交给requests模块,一直循环下去
    start_request:此方法仅能被调用一次,读取start_urls内容并启动循环过程
    neme:设置爬虫名
    start_urls:设置开始第一批爬取的url
    allow_domains:允许爬取的域名列表
    start_request(self):只被调用一次
    parse
    log:日志记录

你可能感兴趣的:(2019-06-21爬虫框架)