scrapy
文章平均质量分 62
潘森迷
it爱好者,和大家共进步!
展开
-
如何整合Flask&Scrapy?
文章来源:如何整合Flask&Scrapy? - 代码领悟code05.com提问:如何整合Flask&Scrapy?我正在使用scrapy来获取数据,我想使用flask web框架在网页中显示结果。 但不知道如何调用flask应用程序中的蜘蛛。 我已经尝试使用CrawlerProcess来调用我的蜘蛛,但我得到了这样的错误:ValueErrorValueError: signal only works in main threadTraceback (most recent cal原创 2022-03-23 08:36:26 · 1159 阅读 · 0 评论 -
Scrapy源码学习-请求去重(单机)
请求去重这是爬虫岗一道高频出现的面试题:Q:对于重复的请求,scrapy是如何去重的?去重原理是什么?请求是如何计算唯一性的?带着这个问题,进入今天的主题。DUPEFILTER_CLASS在scrapy项目配置中,DUPEFILTER_CLASS是框架对请求去重规则的设置项。默认的类路径:scrapy.dupefilters.RFPDupeFilter。进入到文件中,观察到类RFPDupeFilter继承自BaseDupeFilter,而BaseDupeFilter似乎什么都没做,只是定义了一些原创 2022-02-16 13:30:00 · 547 阅读 · 0 评论 -
Scrapy源码学习-Middleware
使用scrapy框架开发一款爬虫,或多或少都会用到中间件。常见的中间件有UserAgent中间件、代理中间件等等。其主要作用就是在爬虫请求的过程中,通过自定义内置的一些方法,来改变如请求的结构,从而伪装请求客户端。比如,在UserAgent中间件中,通过编写process_request方法,将请求中的headers添加自定义ua,或者随机ua来实现动态UserAgent。class UserAgentMiddleware: def process_request(self, request,原创 2022-02-15 15:34:36 · 572 阅读 · 0 评论 -
Scrapy源码学习-ItemLoader
item在scrapy项目结构中,有一个items.py的文件,在里面是专门存放和定义抓取数据字段的。这当然不是强制性要求的。但这种数据字段的定义能够更好地约束未来抓取字段,并且开发者可以一目了然的知道抓了哪些数据。比如我们需要抓取影视网站,可以这样定义:class MovieItem(scrapy.Item): title = scrapy.Field() url = scrapy.Field() cover = scrapy.Field() actors = scr原创 2022-02-13 15:26:17 · 1000 阅读 · 0 评论 -
Scrapy通过扩展启用爬虫完成后消息通知,支持钉钉/微信/飞书等
背景使用过scrapy的开发者都知道,scrapy在爬取结束后是允许发送邮件通知的它内部是通过外部扩展extension的方式集成于scrapy的。邮件实现功能类https://docs.scrapy.org/en/latest/topics/email.html邮件异步通知扩展类https://docs.scrapy.org/en/latest/topics/extensions.html#module-scrapy.extensions.statsmailer在使用过程中需要配置邮箱的信息原创 2021-03-29 17:21:06 · 649 阅读 · 0 评论 -
最近部署和管理scrapy爬虫的一些事
近期开发了几个辅助工具,主要是可视化管理爬虫和任务的调度。因为太过定制化,所以市面上的现成管理工具用起来并不适合。scrapyd-admin 主要是基于scrapyd提供的API做的可视化UI操作,其功能相对简单,上传egg格式的爬虫打包文件,然后选择爬虫文件(spiders目录下)进行调度。也可对爬虫进行自定义传参,当然前提是开发爬虫的时候有接收参数。有了这个可视化管理还不够,如何对全国N个城市进行任务分发,数据清洗和入库呢?随后又做了一个地方站点任务调度。进行指定站点的任务派发和监控原创 2021-03-25 15:37:44 · 114 阅读 · 0 评论 -
scrapy可视化部署分布式爬虫
必要条件scrapy基于此框架开发爬虫脚本scrapyd基于此库远程调度scrapy项目,对外提供api接口redis利用redis-set不可重复特性,写入url-hash自动检测/入库mongodb结果数据写入MongoDB,可更换mysql或其他u like可视化管理在开发这个scrapy可视化部署管理软件之前,我也大量使用了前辈大佬们开发的跨平台或基于GO,或基于Django等开发的web版部署,学习了大佬的流程及经验做了总结。emmm…大概就长这个亚子。未完待续……原创 2021-03-25 15:18:26 · 240 阅读 · 0 评论 -
Scrapy-pipeline-数据存入MongoDB
import pymongofrom itemadapter import ItemAdapterclass MongoPipeline: collection_name = 'scrapy_items' def __init__(self, mongo_uri, mongo_db): # mongo_uri="mongodb://user:pass@[email][email protected][/email]:27017" self.mongo_ur.原创 2021-03-18 13:49:45 · 181 阅读 · 0 评论