我需要从Excel中给出的域列表中抓取数据;问题是我需要从原始网站(让我们举个例子:https://www.lepetitballon.com)和从similartech (https://www.similartech.com/websites/lepetitballon.com)抓取数据。
我希望它们同时被抓取,这样我就可以接收它们,并在最后格式化它们一次,之后我将直接转到下一个域。
理论上,我应该在scrapy中以异步方式使用2个爬行器?
发布于 2020-02-11 00:53:47
理想情况下,您会希望将抓取不同结构站点的爬行器分开,这样从长远来看,您的代码将更容易维护。
从理论上讲,如果由于某种原因,您必须在同一个爬行器中解析它们,那么您可以只收集您想要抓取的URL,并根据基本路径调用不同的解析器回调方法。话虽如此,我个人想不出你为什么要这么做的原因。即使您有相同的结构,也可以重用您的scrapy.Item类。
发布于 2020-02-11 01:42:38
Twisted networking库由scrapy框架用于其内部联网任务,scrapy提供了用于处理设置中的并发请求。
在这里解释:https://docs.scrapy.org/en/latest/topics/settings.html#concurrent-requests
或者你可以使用多个相互独立的爬虫,这在scrapy文档中已经解释过了,这可能就是你正在寻找的。
默认情况下,当您运行Scrapy crawl时,scrapy会为每个进程运行一个爬行器。但是,Scrapy支持使用内部API为每个进程运行多个爬行器。
https://docs.scrapy.org/en/latest/topics/practices.html#running-multiple-spiders-in-the-same-process
根据效率,您可以选择选项A或B,这实际上取决于您的资源和需求,而选项A可能适用于较低的资源,但速度较好,或者选项B可能是较好的速度,但比选项A消耗更高的资源。
https://stackoverflow.com/questions/60152670
复制相似问题