首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将请求传递给不同的蜘蛛

将请求传递给不同的蜘蛛
EN

Stack Overflow用户
提问于 2017-08-09 08:20:18
回答 1查看 99关注 0票数 1

我正在开发一个使用两种不同蜘蛛的网络爬虫(使用scrapy):

  1. 非常通用的蜘蛛,可以抓取(几乎)任何网站使用一串启发式提取数据。
  2. 专门的蜘蛛,能够爬行一个特定的网站A,不能与一般蜘蛛爬行,因为网站的特殊结构(该网站必须被爬行)。

到目前为止,一切都运行得很好,但是网站A包含到其他“普通”网站的链接,这些网站也应该被刮掉(使用蜘蛛1)。是否有一种将请求传递给蜘蛛1的方法?

我想过的解决办法:

  1. 将所有的功能移到蜘蛛1,但这可能会变得非常混乱,蜘蛛1的代码已经很长也很复杂,如果可能的话,我想让这个功能保持独立。
  2. 按照Pass scraped URL's from one spider to another中的建议保存到数据库的链接

有更好的办法吗?

EN

回答 1

Stack Overflow用户

发布于 2017-08-09 09:47:10

我遇到了这样的情况,spyder在第一页中检索URL信息,第二页调用URL进行操作。

我不知道你的控制流是什么,但取决于它,我只是在取消一个新的url时,或者在取消所有可能的url之后,及时调用第一个spyder。

您有n°2可以为同一网站检索URL的情况吗?在本例中,我将存储所有urls,将它们排序为任意一个蜘蛛的dict中的list,然后再次滚动,直到没有新的元素留给列表来探索为止。这使它更好,因为它是更灵活的,在我看来。

及时调用可能是可以的,但取决于您的流程,它可能会使性能下降,因为对相同函数的多次调用可能会浪费大量时间初始化事情。

您还可能希望使分析功能独立于蜘蛛,以便使它们在您认为合适的情况下对两者都可用。如果您的代码是非常长和复杂的,它可能有助于使它更轻和更清晰。我知道这样做并不总是可以避免的,但这可能值得一试,而且您最终可能会在代码级别上更有效率。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45585281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档