Boris
Boris
> 依然没有跳转。。。你们可以排查测试一下有没有BUG,期待你们的更新! 我这没问题,测试代码 ``` import feapder class TestSpider(feapder.AirSpider): def start_requests(self): yield feapder.Request("https://news.qq.com/", render=True) def parse(self, request, response): pass if __name__ == "__main__": TestSpider().start() ``` 你排查下是不是你的selenium环境问题
> SPIDER_SLEEP_TIME看源代码是在一批请求执行完成后才sleep的,并不能实现每个请求之间的时间间隔。不知道这是故意这样设计的吗?还是if setting.SPIDER_SLEEP_TIME:xxx逻辑不小心放到for request in requests:xxx外面去了? feapder==1.7.5 修复了这个逻辑,sleep每次请求后都生效
> bloomfiler 有bug。 ScalableBloomFilter检查filter是否已满是每30分钟一次,而它调用的BloomFilter是每次add都会检查是否已满。这会导致如果ScalableBloomFilter中检查时间不满30分钟,但是bloomFilter就已经满了的情况下,add会抛出异常。ScalableBloomFilter和BloomFilter的检查机制建议同步。 另外不是很明白为什么BloomFilter满一半时就抛出异常,如果是为了在BloomFilter未满时ScalableBloomFilter可以提前申请新的BloomFilter,应该是BloomFilter满一半时,返回已满的状态,但是不要抛出异常,异常还是应该等待BloomFilter都满的时候再抛出。否则,每次刚到一半就抛异常,一方面浪费一半空间,另一方面就会出现外层的ScalableBloomFilter显示BloomFilter没满,但是一添加新的元素就报异常。 感谢,feapder==1.7.6b1 已修复
> 虽然在 《爬虫集成》 中介绍了多爬虫的集成方式。如果每个爬取的站点使用的解析器都是一样的,有没有更简单的写法呢? 解析器一样的,那不就一个解析器就行了,不用上集成
os._exit(0)
selenium 本身支持么? 不支持就换playwright吧
> @Leezj9671 > 那么 feapder 是怎么解决充分利用多核性能的问题呢? 可以启动多个进程,同时采集
> 如果redis里面存的不是url怎么办? > start_callback好像拿不到redis数据 你的任务是没url 不需要下载的么?不需要下载有个参数 auto_request=False就可以了 https://boris.org.cn/feapder/#/source_code/Request
> 是的。 > 任务里是请求的参数和一些数据,数据需要拿出来和网页的请求数据做对比, > 所以我这启动任务之后,是需要先拿到redis里的数据,才开始请求的。 > 没有找到怎么拿redis数据,我的生产环境是不能连数据库的 不能连redis数据库,还要在redis里拿数据?
> 不好意思,我表达的不好。 > redis里面存的是请求需要的数据, > 爬虫启动的时候需要先去redis里面取数据拼url和数据对比,然后在开始请求 > 生产环境只能连redis,不能练sql server。 > 我主要想解决的就是,启动的时候能不能拿redis里面存的数据 你可以使用框架封装好的RedisDB :http://feapder.com/#/source_code/RedisDB 也可以使用 第三方包: redis 如果你用的是Spider爬虫,任务是start_requests下发的,那框架会自动把任务取回来,然后可以在download_midware中拼接任务