scrapy
文章平均质量分 89
Python成长路
如果连方向都是错误的,那么努力还有什么意义呢
展开
-
scrapy使用布隆过滤器
搜一下scrapy布隆过滤器其实已经有现成的了,看了下代码发现还有能优化的地方,就在上面做了点优化。原创 2022-09-29 14:45:36 · 882 阅读 · 0 评论 -
浅谈scrapy去重机制
前言最近出现了两个问题url的参数或者post的数据中有随机值和签名,比如https://www.baidu.com?id=1&nonce=xxxxxxxx&sign=1232344https://www.baidu.com?id=1&nonce=sssssss&sign=2323124这两个链接其实是同一个,nonce只是个随机值,而sign也只是对id和nonce做了签名,但是这两个链接都会被访问一次想法1:重写过滤器,将nonce和sign从请求参数中去原创 2021-11-26 11:11:59 · 1336 阅读 · 0 评论 -
scrapy配置参数(settings.py)
# 项目名称BOT_NAME = '$project_name'SPIDER_MODULES = ['$project_name.spiders']NEWSPIDER_MODULE = '$project_name.spiders'# 在项目处理器(也称为“ 项目管道”)中并行处理的最大并发项目数(每个响应),默认100。#CONCURRENT_ITEMS = 100# Scra...转载 2020-04-14 16:07:39 · 1843 阅读 · 0 评论 -
scrapy项目管道(item pipeline)
scrapy提供了很多中间组件可以让我们更加自定义想要的效果,比如项目管道(item pipeline),下载中间件(downloader middleware),蜘蛛中间件(spider middleware)等。通过更改或者添加的方式我们可以实现很多的功能。这种中间组件就像钩子一样,在完成结果之前,修改部分内容来使结果不一样,或者只是记录一下内容。先来说说项目管道,项目管道处理爬虫返回或迭代...原创 2020-04-15 16:30:07 · 647 阅读 · 0 评论 -
scrapy下载中间件(downloader middleware)和蜘蛛中间件(spider middleware)
scrapy组件首先我们看下scrapy官网提供的新结构图,乍一看这画的是啥啊,这需要你慢慢的理解其原理就很容易看懂了,这些都是一个通用爬虫框架该具有的一些基本组件。上一篇博客说了项目管道(也就是图中的ITEM PIPELINES),可以看到中间的引擎(ENGINE)将item传递给了项目管道,也就是让项目管道来处理抓取到的内容。另外图中的所谓的组件只是抽象出来的东西比较容易让人理解,其实这些...原创 2020-04-16 16:31:43 · 1254 阅读 · 0 评论 -
scrapy 自定义命令
前言scrapy有很多的内置命令,但是有时候我们会想要自定义一些命令,因为写脚本不如敲个命令来的有逼格,也更方便。不过scrapy官网并没有对自定义命令的文档,有的只是一句话:您也可以使用该COMMANDS_MODULE设置添加自定义项目命令 。有关如何实现命令的示例,请参见scrapy / commands中的 Scrapy命令。说白了就是让我们自己看源码。脚本方式启动爬虫源码等下看,先...原创 2020-04-20 13:38:42 · 546 阅读 · 0 评论 -
scrapy自定义扩展(extensions)实现实时监控scrapy爬虫的运行状态
如何获取scrapy爬虫的运行状态呢?很简单,官方提供了一个字典就包含一些抓取的信息,crawler.stats.get_stats(),crawler是scrapy中的一个组件。你可以在很多组件中访问他,比如包含from_crawler(cls, crawler)方法的所有组件。既然得到了scrapy的运行状态,想要实时显示出来应该也很简单吧。同样是使用上一篇博客用到的influxdb+grafana来展示数据,我们只需要将scrapy的一些运行信息实时同步到influxdb这个数据库,就能通过graf原创 2020-05-18 18:56:22 · 2063 阅读 · 3 评论 -
scrapy运行定量爬虫
假设需求现在大概有一千个scrapy的爬虫文件,10台机器,如何合理的分配爬虫?什么,这么简单的数学题还要问,一台机器分100个爬虫不就行了。确实,这样分配最简单也最直接,但会带来一些问题。就比如,有些站点网页少而有些网站很大,每个爬虫运行的时间是不一样的,最后可能导致一台累死,九台围观。而且一台机器同时运行100个爬虫,在硬件资源上的消耗会很大,也可能会导致很多爬虫无法正常运行,所以即使是这样分配爬虫我们也要限制同时运行的爬虫数量。当某个爬虫运行完了,才执行下一个。解决方法可以先创建出一个队列,队列原创 2020-05-19 16:40:22 · 535 阅读 · 0 评论 -
scrapyd的Windows管理客户端
ScrapydManagescrapyd的Windows管理客户端,只是将scrapyd的api集成到exe文件中,软件是由aardio写的,上面是源代码可以自行编译。也可以下载release已编译的exe文件。主机管理界面右键菜单:添加主机添加主机顾名思义就是添加scrapyd的api地址,例如127.0.0.1:6800。不理解scrapyd怎么使用的可以参考官方文档:https://scrapyd.readthedocs.io/en/stable/index.html。其实很简单,pip原创 2020-05-20 10:51:33 · 270 阅读 · 0 评论 -
scrapy日志系统
前言如何修改scrapy的日志?我想大部分人想到的都是修改配置文件的几个参数。参数如下:LOG_ENABLED: 是否启用logLOG_ENCODING: log编码,仅针对保存文件时LOG_FILE: 日志文件名LOG_FORMAT:日志格式化字符串LOG_DATEFORMAT:日志时间格式化字符串LOG_LEVEL:日志级别LOG_STDOUT:是否重定向stdoutLOG_SHORT_NAMES:过滤掉大部分日志,没啥用LOG_FORMATTER:格式化日志的类,默认为scra原创 2020-11-18 14:25:47 · 1122 阅读 · 0 评论