- 爬虫框架:
- 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进行功能扩展
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:日志记录
网友评论