scrapy pipeline(scrapy item pipeline 什么时候执行)

2024-07-20 23:14:07 11

scrapy pipeline(scrapy item pipeline 什么时候执行)

本文目录

scrapy item pipeline 什么时候执行

pipeline 主要包含以下三个函数1 def open_spider(self, spider)这是爬虫开始时执行的,可以在这里初始化相关参数2 def process_item(self, item, spider)这个方法一般在爬虫程序中yield调用的时候被触发,其中一个参数item就是yield传过来的,可以在这里处理抓到的数据,比如说进一步格式化,数据保存等。3 def close_spider(self, spider)爬虫结束执行时触发,在这里可以进行文件关闭,数据库关闭等处理。

scrapy不进入pipeline的原因排查

1、首先排查pipeline类是否有在settings中注册 2、查看spider中最后有没有忘记写yield item 一般是由于第二个原因。 顺便提一句,scrapy运行起来之后,pipeline只有一个实例。 所以去重的话,如果是单机模式,可以在pipeline中采用set去重。

scrapy怎样建立多个spider

1、scrapy默认支持多爬虫,爬虫名区分就可以了2、item是数据库orm,新建class就行了,3、pipeline管道,可以更加爬虫名入不同的数据库4、setting设置数据库等配置信息

scrapy多个spider怎么指定pipeline

定义多个pipeline类,在settings里面打开想要打开的pipeline就行。也可以在custom_settings里面配置。

scrapy可以一次性返回多个不同的item给pipeline处理吗

在 items.py 建立不同的item 类items.pyfrom scrapy import Item, Fieldclass Item1(Item): passclass Item2(Item): passcustom_spider.pyfrom scray.spider import BaseSpiderfrom custom_spider.items import Item1, Item2class Spider(BaseSpider): def __init__(self): pass def parse(self): item_a = Item1() item_b = Item2()

scrapy-redis分布式爬虫启动为什么会等待

scrapy-redis所实现的两种分布式:爬虫分布式以及item处理分布式。分别是由模块scheduler和模块pipelines实现。

一、Scrapy-redis各个组件介绍

(I) connection.py

负责根据setting中配置实例化redis连接。被dupefilter和scheduler调用,总之涉及到redis存取的都要使用到这个模块。

(II) dupefilter.py

负责执行requst的去重,实现的很有技巧性,使用redis的set数据结构。但是注意scheduler并不使用其中用于在这个模块中实现的dupefilter键做request的调度,而是使用queue.py模块中实现的queue。

当request不重复时,将其存入到queue中,调度时将其弹出。

(III)queue.py

其作用如II所述,但是这里实现了三种方式的queue:

FIFO的SpiderQueue,SpiderPriorityQueue,以及LIFI的SpiderStack。默认使用的是第二中,这也就是出现之前文章中所分析情况的原因(链接)。

(IV)pipelines.py

这是是用来实现分布式处理的作用。它将Item存储在redis中以实现分布式处理。

另外可以发现,同样是编写pipelines,在这里的编码实现不同于文章(链接:)中所分析的情况,由于在这里需要读取配置,所以就用到了from_crawler()函数。

(V)scheduler.py

此扩展是对scrapy中自带的scheduler的替代(在settings的SCHEDULER变量中指出),正是利用此扩展实现crawler的分布式调度。其利用的数据结构来自于queue中实现的数据结构。

scrapy-redis所实现的两种分布式:爬虫分布式以及item处理分布式就是由模块scheduler和模块pipelines实现。上述其它模块作为为二者辅助的功能模块。

(VI)spider.py

设计的这个spider从redis中读取要爬的url,然后执行爬取,若爬取过程中返回更多的url,那么继续进行直至所有的request完成。之后继续从redis中读取url,循环这个过程。

二、组件之间的关系

三、scrapy-redis实例分析

(1)      spiders/ ebay_redis.py

classEbayCrawler(RedisMixin,CrawlSpider):

"""Spiderthat reads urls from redis queue (mycrawler:start_urls)."""

name = ’ebay_redis’

redis_key = ’ ebay_redis:start_urls’

rules = (

# follow all links

#         Rule(SgmlLinkExtractor(),callback=’parse_page’, follow=True),

Rule(sle(allow=(’+/itm/’, )), callback=’parse_item’),

)

#该方法是最关键的方法,该方法名以下划线开头,建立了和redis的关系   

def _set_crawler(self, crawler):

CrawlSpider._set_crawler(self, crawler)

RedisMixin.setup_redis(self)

#   解析sku页面

defparse_item(self,response):

sel =Selector(response)

base_url =get_base_url(response)

item = EbayphoneItem()

print base_url

item

item/text()").extract()

return item

该类继承了RedisMixin(scrapy_redis/spiders.py中的一个类)和CrawlSpider,加载配置文件的各项,建立和redis的关联,同时进行抓取后的解析。关键方法为_set_crawler(self, crawler),关键属性是redis_key,该key如果没有初始化则默认为spider.name:start_urls

_set_crawler()方法是如何被调用的:

scrapy/crawl.py/Crawler: crawl() -》

scrapy/crawl.py/Crawler:_create_spider () -》

CrawlSpider:from_crawler() –》

scrapy/spiders/Spider: from_crawler() -》

ebay_redis.py :_set_crawler()

(2)      setting.py

SPIDER_MODULES=

NEWSPIDER_MODULE= ’example.spiders’

ITEM_PIPELINES = {

’example.pipelines.ExamplePipeline’:300,

#通过配置下面该项RedisPipeline’会将item写入key为

#spider.name:items的redis的list中,供后面的分布式处理item

’scrapy_redis.pipelines.RedisPipeline’:400,

}

SCHEDULER= "scrapy_redis.scheduler.Scheduler"

#不清理redisqueues, 允许暂停或重启crawls

SCHEDULER_PERSIST= True

SCHEDULER_QUEUE_CLASS= ’scrapy_redis.queue.SpiderPriorityQueue’

#该项仅对queueclass is SpiderQueue or SpiderStack生效,阻止spider被关闭的最大空闲时间

SCHEDULER_IDLE_BEFORE_CLOSE= 10

#连接redis使用

REDIS_HOST = ’123.56.184.53’

REDIS_PORT= 6379

(3)      process_items.py:

defmain():

pool =redis.ConnectionPool(host=’123.56.184.53’, port=6379, db=0)

r = redis.Redis(connection_pool=pool)

while True:

# process queue as FIFO, change `blpop`to `brpop` to process as LIFO

source, data =r.blpop()

item = json.loads(data)

try:

print u"Processing: %(name)s《%(link)s》" % item

except KeyError:

print u"Error procesing:%r" % item

if__name__ == ’__main__’:

main()

该模块是从redis对应的list中取出item,进行处理,可以运行多个进程分布式处理items

(4)执行过程如下:

首先在redis服务器端打开redis服务:

./redis-server

其次执行

***隐藏网址***

然后运行爬虫:

scrapy runspiderebay_redis.py

可以执行多个爬虫,同时对ebay_redis:start_urls中的url进行分布式爬取,爬取后的结果都存入了ebay_redis:items的list中,供后续再次处理

最后可以查看items队列中的内容

./redis-cli llen ebay_redis:items 可以看到该items中总的个数

scrapy pipeline(scrapy item pipeline 什么时候执行)

本文编辑:admin

更多文章:


tooltip是什么(菜鸟请教MSFlexGrid中的ToolTipText有什么功能)

tooltip是什么(菜鸟请教MSFlexGrid中的ToolTipText有什么功能)

本文目录菜鸟请教MSFlexGrid中的ToolTipText有什么功能什么是alt标签c++ 中InitToolTip是什么意思这两段代码分别是什么意思,其中application-name :什么意思,msapplication-too

2024年7月2日 08:10

抖音怎么做视频能上热门(做抖音短视频如何才能上热门)

抖音怎么做视频能上热门(做抖音短视频如何才能上热门)

大家好,抖音怎么做视频能上热门相信很多的网友都不是很明白,包括做抖音短视频如何才能上热门也是一样,不过没有关系,接下来就来为大家分享关于抖音怎么做视频能上热门和做抖音短视频如何才能上热门的一些知识点,大家可以关注收藏,免得下次来找不到哦,下

2024年8月23日 04:15

suck in(suck in是什么意思)

suck in(suck in是什么意思)

大家好,如果您还对suck in不太了解,没有关系,今天就由本站为大家分享suck in的知识,包括suck in是什么意思的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录suck in是什么意思sucking翻译

2024年7月2日 11:47

destring命令(关于stata软件中label命令的疑问)

destring命令(关于stata软件中label命令的疑问)

本文目录关于stata软件中label命令的疑问stata的more一直在转怎么办关于stata软件中label命令的疑问label define 的是variable的值,而不是某个variable的名字。比如说有个var叫做a,值是1,

2024年7月21日 03:30

read怎么读中文(read的谐音怎么读)

read怎么读中文(read的谐音怎么读)

本文目录read的谐音怎么读read是什么意思中文read中文怎么解释read/read的中文是read怎么读read该怎么读,音标read的谐音怎么读读法:英  1、vt. 阅读;读懂,理解2、vi. 读;读起来3、n. 阅读;读物4、a

2024年7月18日 12:15

term是什么中文意思(term翻译中文)

term是什么中文意思(term翻译中文)

本文目录term翻译中文terms是什么意思term中文翻译term翻译成中文term是什么意思及反义词term是什么意思请教term的意思term是什么意Term是什么意思term翻译中文term翻译中文是术语;期限;任期;词语,把…称为

2024年7月24日 09:06

网页编辑器哪个好用(HTML开发最好的工具,不用花钱,又好用的,有什么推荐)

网页编辑器哪个好用(HTML开发最好的工具,不用花钱,又好用的,有什么推荐)

本文目录HTML开发最好的工具,不用花钱,又好用的,有什么推荐有哪些好用的网页版图片编辑器HTML开发最好的工具,不用花钱,又好用的,有什么推荐HTML前端开发是目前Web开发一个非常火的行业,和用户直接打交道,因此整体薪资和前景都非常不错

2023年9月14日 13:00

connection was reset errno 10054(关于python errno 10054问题)

connection was reset errno 10054(关于python errno 10054问题)

大家好,关于connection was reset errno 10054很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于关于python errno 10054问题的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧

2024年7月8日 15:10

underrepresented(所有under复合词的汉语意思)

underrepresented(所有under复合词的汉语意思)

本文目录所有under复合词的汉语意思联邦司法机构是否应当保护少数或未被充分代表(underrepresented)群体的权利联under-represented是什么意思所有under复合词的汉语意思underage未成年的underbe

2024年7月2日 14:10

fiddler下载教程(fiddler怎么安装证书)

fiddler下载教程(fiddler怎么安装证书)

本文目录fiddler怎么安装证书如何运用fiddler测试appfiddler在哪下载fiddler怎么安装证书第一步当然是下载安装包拉,操作非常简单就是进入官网,在页面右侧有个红色的按钮【free down】下载完成后如下图,桌面的安装

2024年1月31日 20:00

getchar函数可以向终端输入一个(C语言:getchar函数的用法)

getchar函数可以向终端输入一个(C语言:getchar函数的用法)

本文目录C语言:getchar函数的用法putchar的用法是什么c语言中getchar和scanf以及putchar和printf的区别!ch=getchar(); putchar(ch);和putchar(getchar())的区别C语

2024年7月16日 22:19

xsl是什么格式的文件(office2007怎么有XSL和XSLX两种后缀,他们两种有何区别)

xsl是什么格式的文件(office2007怎么有XSL和XSLX两种后缀,他们两种有何区别)

其实xsl是什么格式的文件的问题并不复杂,但是又很多的朋友都不太了解office2007怎么有XSL和XSLX两种后缀,他们两种有何区别,因此呢,今天小编就来为大家分享xsl是什么格式的文件的一些知识,希望可以帮助到大家,下面我们一起来看看

2024年9月5日 19:50

负数补码的绝对值(计算用补码表示的二进制数的代数和如果和为负数,请求出负数的绝对值)

负数补码的绝对值(计算用补码表示的二进制数的代数和如果和为负数,请求出负数的绝对值)

本文目录计算用补码表示的二进制数的代数和如果和为负数,请求出负数的绝对值二进制补码为负数,求这个负数的绝对值怎么求补码里多的那个绝对值最大的负数是怎样负数补码的绝对值怎么求为啥二进制补码的代数和如果为负数 则负数的绝对值就是求这个负数的补码

2024年5月10日 02:00

seekgirl fog救出五个女孩然后呢(seekgirlfog1第一关打完怎么没了)

seekgirl fog救出五个女孩然后呢(seekgirlfog1第一关打完怎么没了)

本文目录seekgirlfog1第一关打完怎么没了SeekGirl:FogⅠ礼物攻略全角色喜好物品列表seek girl fog1为何进去只有迷宫求一部香港电影的名字;是讲一群女生跟几个男生的故事,以沙滩为背景,男主角长得像叶世荣,他是小混

2024年7月23日 09:58

denying怎么读(There is no denying the fact that 是什么意思)

denying怎么读(There is no denying the fact that 是什么意思)

本文目录There is no denying the fact that 是什么意思There is no denying the fact that 是什么意思There is no denying the fact that意思是不可

2024年6月26日 19:39

archwiki(Linux新手如何在较短的时间内学习并使用archlinux)

archwiki(Linux新手如何在较短的时间内学习并使用archlinux)

本文目录Linux新手如何在较短的时间内学习并使用archlinuxarch下怎么装fcitxLinux新手如何在较短的时间内学习并使用archlinux我不认为ArchLinux适合新手,系统安装是一方面:Arch的安装需要大量使用命令行

2024年6月28日 09:46

sessionstorage怎么读(HTML5面试中常会被问到的面试题有哪些)

sessionstorage怎么读(HTML5面试中常会被问到的面试题有哪些)

大家好,关于sessionstorage怎么读很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于HTML5面试中常会被问到的面试题有哪些的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦

2024年7月7日 21:15

lesson是什么词性(lesson是不是动词)

lesson是什么词性(lesson是不是动词)

本文目录lesson是不是动词subject和lesson的区别是什么课堂的词性课堂的词性是什么lesson和subject的区别是什么lesson是不是动词lesson有动词的意思n. 教训;课vt. 教训;上课有不明白的地方再问哟,祝你

2024年7月12日 01:01

write前缀(ex-girlfriend翻译为前任女友ex最为前缀它的全称是什么还有co-write是什么意思)

write前缀(ex-girlfriend翻译为前任女友ex最为前缀它的全称是什么还有co-write是什么意思)

大家好,如果您还对write前缀不太了解,没有关系,今天就由本站为大家分享write前缀的知识,包括ex-girlfriend翻译为前任女友ex最为前缀它的全称是什么还有co-write是什么意思的问题都会给大家分析到,还望可以解决大家的问

2024年7月10日 04:57

二建报考条件2022年考试时间(2022年二建报名时间和条件 几月份考试)

二建报考条件2022年考试时间(2022年二建报名时间和条件 几月份考试)

本文目录2022年二建报名时间和条件 几月份考试2022年二级建造师考试时间2022年二建报名条件及考试时间2022年全国二级建造师考试时间安排二建什么时候考2022年考试时间是哪天2022年二级建造师考试报名时间 具体是哪天浙江二建考试时

2024年7月19日 12:59

近期文章

本站热文

iphone vpn设置(ios设置vpn快捷开关)
2024-07-22 15:01:12 浏览:2334
windows12正式版下载(操作系统Windows Server 2012 R2,在哪能下载到,公司用的)
2024-07-20 17:26:53 浏览:1730
java安装教程(win10如何安装JAVA)
2024-07-19 19:55:49 浏览:1155
client mfc application未响应(每次进cf就提示client MFC Application未响应该怎么办啊!急急急)
2024-07-20 11:15:58 浏览:1152
标签列表

热门搜索