类别:Python / 日期:2019-12-02 / 浏览:115 / 评论:0

scrapy的流程

其流程可以形貌以下:

● 调理器把requests-->引擎-->下载中间件--->下载器

● 下载器发送要求,猎取相应---->下载中间件---->引擎--->爬虫中间件--->爬虫

● 爬虫提取url地点,组装成request对象---->爬虫中间件--->引擎--->调理器

● 爬虫提取数据--->引擎--->管道

● 管道举行数据的处置惩罚和保留

引荐进修:Python视频教程

注重:

图中绿色线条的示意数据的通报

注重图中中间件的位置,决议了其作用

注重个中引擎的位置,一切的模块之前互相自力,只和引擎举行交互

scrapy中每一个模块的细致作用

1.scrapy项目完成流程

建立一个scrapy项目:scrapy startproject 项目名

生成一个爬虫:scrapy genspider 爬虫名 许可爬取的局限

提取数据:完美spider,运用xpath等要领

保留数据:pipeline中保留数据

2. 建立scrapy项目

敕令:scrapy startproject +<项目名字>

示例:scrapy startproject myspider

生成的目次和文件效果以下:

settings.py中的重点字段和内在

● USER_AGENT 设置ua

● ROBOTSTXT_OBEY 是不是恪守robots协定,默许是恪守

● CONCURRENT_REQUESTS 设置并发要求的数目,默许是16个

● DOWNLOAD_DELAY 下载耽误,默许无耽误

● COOKIES_ENABLED 是不是开启cookie,即每次要求带上前一次的cookie,默许是开启的

● DEFAULT_REQUEST_HEADERS 设置默许要求头

● SPIDER_MIDDLEWARES 爬虫中间件,设置历程和管道雷同

● DOWNLOADER_MIDDLEWARES 下载中间件

建立爬虫

敕令:scrapy genspider +<爬虫名字> + <许可爬取的域名>

生成的目次和文件效果以下:

完美spider

完美spider即经由过程要领举行数据的提取等操做:

注重:

● response.xpath要领的返回效果是一个相似list的范例,个中包括的是selector对象,操纵和列表一样,然则有一些分外的要领

● extract() 返回一个包括有字符串的列表

● extract_first() 返回列表中的第一个字符串,列表为空没有返回None

● spider中的parse要领必需有

● 须要抓取的url地点必需属于allowed_domains,然则start_urls中的url地点没有这个限定

● 启动爬虫的时刻注重启动的位置,是在项目途径下启动

数据通报到pipeline

为何要运用yield?

● 让全部函数变成一个生成器,有什么优点呢?

● 遍历这个函数的返回值的时刻,挨个把数据读到内存,不会形成内存的霎时占用太高

● python3中的range和python2中的xrange同理

注重:

yield可以通报的对象只能是:BaseItem,Request,dict,None

6. 完美pipeline

pipeline在settings中可以开启多个,为何须要开启多个?

● 差别的pipeline可以处置惩罚差别爬虫的数据

● 差别的pipeline可以举行差别的数据处置惩罚的操纵,比方一个举行数据洗濯,一个举行数据的保留

pipeline运用注重点

● 运用之前须要在settings中开启

● pipeline在setting中键示意位置(即pipeline在项目中的位置可以自定义),值示意间隔引擎的远近,越近数据会越先经由

● 有多个pipeline的时刻,process_item的要领必需return item,不然后一个pipeline取到的数据为None值

● pipeline中process_item的要领必需有,不然item没有办法接收和处置惩罚

● process_item要领接收item和spider,个中spider示意当前通报item过来的spider

本文来自 python教程 栏目,迎接进修!

以上就是Python爬虫-scrapy引见及运用的细致内容,更多请关注ki4网别的相干文章!

打赏

感谢您的赞助~

打开支付宝扫一扫,即可进行扫码打赏哦~

版权声明 : 本文未使用任何知识共享协议授权,您可以任何形式自由转载或使用。

 可能感兴趣的文章

评论区

发表评论 / 取消回复

必填

选填

选填

◎欢迎讨论,请在这里发表您的看法及观点。