TurboWay / spiderman

基于 scrapy-redis 的通用分布式爬虫框架

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

如何在一个进程中启动多个爬虫

donneyluck opened this issue · comments

当前的做法是 python SP_JOBS/zhifang_job.py 这样只能启动一类爬虫
如果想启动多个的话 就要执行多个进程
问题如下:

  1. 可否在一个进程中执行
  2. 多爬虫启动 两种方案哪种更好 (效率方面)
commented

1.每个爬虫都可以调整并发,而单进程启多个爬虫,也只是增加并发,所以没有多大意义。
2.只考虑效率的话,因为GIL锁,所以多进程更好。但爬虫一般是IO密集型任务,所以差别应该也不会很大。

实际上,影响效率的主因一般都是目标网站的性能,以及反爬限制。另外,也不建议对单网站使用过高的并发,与人为善,只做友好爬虫。

感谢大佬回复
在看代码的过程中 看到了去重 和 增量 相关
初学者不是很懂这个概念 所以还有几个问题请教
image

  1. 去重指的是爬取地址的去重 还是爬取结果的去重
  2. 什么叫增量爬取
  3. 布隆过滤器 是过滤爬取地址的 还是过滤结果的
commented

1.地址去重
2.增量和去重差不多,这边的意思就是保留采集过的所有目标指纹,自动过滤,不会重复爬。但是会占用redis空间。
3.过滤地址


就是说 布隆过滤器 和 self.delete() 二者选其一就可以了是吧

不好意思还有个问题 听您说要做一个友好的爬虫
请问 一般爬虫数量和 并发数量 开多少比较好呢

commented

就是说 布隆过滤器 和 self.delete() 二者选其一就可以了是吧

并不是。self.delete() 是不保存指纹,就是每次执行的时候,会将上次采集地址的指纹删掉。布隆过滤器是允许一定漏失率的前提下,使用更小空间来实现大数据量的去重。

commented

不好意思还有个问题 听您说要做一个友好的爬虫 请问 一般爬虫数量和 并发数量 开多少比较好呢

没有反爬的前提下,视网址响应的速度而定。scrapy 默认每个 domain 是 16 个并发。