分类 爬虫 中的文章

[可视化抓取]portia2.0尝鲜体验以及自动化畅想[1]

缘起 最近一直在思考如何更改智能化抓取的事情,每当来了一个新的task,都要自己手动分析,手动写xpath ,然后写正则,各种测试,各种部署,其实说来,这些事情的重复度很高,那我们能不能把一些重复性的动作抽象出来,做成一个独立的单元呢?在参考佷多类似的自动化的工具之后,猜想了如下的动……

阅读全文

scrapy下的一些常见错误处理

常见的一些小错误分类处理 内部错误 逻辑错误 其它错误 内部错误 TypeError 表现形式:TypeError: ‘float’ object is not iterable 相关搜索:https://github.com/scrapy/scrapy/issues/2461 解决方法:sudo pip install -U Twisted==16.6.0 ERROR: Unable to read the instance data ,giving up 表现形式: 直接error 报错……

阅读全文

关于爬虫的架构,经验,以及分享

要点包含 架构 个人 分享 架构 如何设计一个复杂的分布式爬虫系统 DCOS应用案例(一):登陆爬虫——微服务架构典型 社会化海量数据采集爬虫架构构建 记一次企业级爬虫系统升级改造(一) 总结 2016,我对爬虫的总结 使用python,scrapy写(定制)爬虫的经验,资料,杂 分享 设计爬虫Hawk背……

阅读全文

scrapy经验分享-同一项目不同的spider启用不同的配置

在群里经常被问到如何解决同一个爬虫启用不同的piepline的问题,一般的解决通过参数的不同解决这个 def process_item(self, item, spider): self._client.create_index([('msg_id', pymongo.DESCENDING)], background=True) self._client.update_one(filter={'msg_id': item['msg_id']}, update={'$set': dict(item)}, upsert=True) return item 代码中有两个重要的参数item,还有一个spider ,我们打个断点来看看spider 里面的都有些什么 简单点我们可以通过name做逻辑上的判断 if spider.name == 'spider_1': do sth....……

阅读全文

[scrapy]scrapy源码分析–中间件是如何加载的

中间件是scrapy的核心部分,数据的传递,队列的维护,都是靠中间件,所以了解他的生命周期还是很有必要的 https://github.com/scrapy/scrapy/blob/master/scrapy/core/spidermw.py def _add_middleware(self, mw): super(SpiderMiddlewareManager, self)._add_middleware(mw) if hasattr(mw, 'process_spider_input'): self.methods['process_spider_input'].append(mw.process_spider_input) if hasattr(mw, 'process_spider_output'): self.methods['process_spider_output'].insert(0, mw.process_spider_output) if hasattr(mw, 'process_spider_exception'): self.methods['process_spider_exception'].insert(0, mw.process_spider_exception) if hasattr(mw, 'process_start_requests'): self.methods['process_start_requests'].insert(0, mw.process_start_requests) 将中间件的每内置的方法加入到方法链上,注意,这里的数值越小,处理越靠前,下同 https://github.com/scrapy/scrapy/blob/master/scrapy/core/scraper.py 这里就去处理spiderMiddleWare class Scraper(object):……

阅读全文

[scrapy]scrapy源码分析--数据是如何处理的

目录 下载中间件(Download MiddleWare)是如何加载的 Spider MiddleWare是如何加载的 配置文件是如何起作用的 整体的执行流程是怎样的 扩展件是如何工作的 数据是怎么处理的 分析 我们正常的思路就是从spider的parse方法来着手,因为我们写的最多的代码就是从这里开始的,这……

阅读全文

[爬虫资源]各大爬虫资源大汇总,做我们自己的awesome系列

大数据的流行一定程序导致的爬虫的流行,有些企业和公司本身不生产数据,那就只能从网上爬取数据,笔者关注相关的内容有一定的时间,也写过很多关于爬虫的系列,现在收集好的框架希望能为对爬虫有兴趣的人,或者想更进一步的研究的人提供索引,也随时欢迎大家star,fork ,或者提issue,让……

阅读全文

[搜索引擎searx]10分钟搭建一个好玩的python全文搜索引擎

源起 之前有一个群友在群里问个如何快速搭建一个搜索引擎,在搜索之后我看到了这个 代码所在 Git:https://github.com/asciimoo/searx 官方很贴心,很方便的是已经提供了docker 镜像,基本pull下来就可以很方便的使用了,执行命令 cid=$(sudo docker ps -a | grep searx | awk '{print $1}') echo searx cid is $cid if [ "$cid" != "" ];then sudo docker stop $cid sudo docker rm $cid fi sudo docker run -d --name searx -e IMAGE_PROXY=True -e BASE_URL=http://yourdomain.com -p 7777:8888 wonderfall/searx 然后就可以……

阅读全文

(13)分布式下的爬虫Scrapy应该如何做-分布式架构

上一篇我们已经讲了是什么,为什么的问题,从我们一些简单的实例中分析了分布式的一些优势,以及一些现有的,基于scrapy的分布式的框架。接下来就是分享我工作中使用的框架基本思想 源码 我们先从scrapy的Spider源码来看 def from_crawler(cls, crawler, *args, **kwargs): spider = cls(*args, **kwargs) spider._set_crawler(crawler) return spider def set_crawler(self, crawler): warnings.warn("set_crawler is deprecated, instantiate and bound the " "spider to this crawler with from_crawler method……

阅读全文

(12)分布式下的爬虫Scrapy应该如何做-浅析分布式

我们先了解一下分布式,以下的内容在很早之前分享在一个爬虫群里面,现在拿出来重新回顾一下。 大家面试或者聊天的时候,装逼都会问,分布式,你会吗?那什么是分布式,为什么要分布式,怎么样实现分布式,我们先从逻辑上思考这三个问题 是什么 为什么 怎么样 啥是分布式 分布式说白了,就是你是一个有钱的地……

阅读全文

最近文章

分类

标签

友情链接

其它