我基本上是在尝试启动一个 HTTP 服务器,它将响应来自我可以使用 Scrapy 抓取的网站的内容。为了开始抓取网站,我需要登录它,为此我需要使用凭据等访问数据库。这里的主要问题是我需要一切都完全异步,到目前为止,我正在努力寻找一种组合,使一切正常工作,而无需许多草率的实现。
我已经让 Klein + Scrapy 工作了,但是当我开始实现数据库访问时,我的脑子里一片混乱。有什么方法可以让 PyMongo 与 Twisted 或其他东西异步(是的,我看过 TxMongo 但文档很糟糕,我想避免它。我也找到了 adbapi 的实现,但我想要更类似于 PyMongo 的东西)。
试图通过另一种方式思考问题,我确信 aiohttp 有更多的选项来实现async
数据库访问和其他东西,但后来我发现自己陷入了与 Scrapy 集成的僵局。
我见过像scrapa、scrapyd和ScrapyRT这样的东西,但这些对我来说并不真正有效。还有其他选择吗?
最后,如果没有任何效果,我将只使用 aiohttp 而不是 Scrapy,我将向 websito 发出请求以手动废弃并使用 beautifulsoup 或类似的东西从响应中获取我需要的信息。关于如何走这条路有什么建议吗?
感谢您的关注,我在这方面是个菜鸟,所以我不知道我是否完全有道理。无论如何,任何帮助将不胜感激:)
有没有办法让pymongo与twisted异步
不。pymongo 被设计为一个同步库,如果不基本上重写它,你就无法使它异步(你可以使用线程或进程,但这不是你问的,你也可能遇到线程安全问题的代码)。
试图通过另一种方式思考问题,我确信 aiohttp 有更多的选项来实现异步数据库访问和其他东西
它没有。aiohttp
是一个 http 库 - 它可以异步执行 http,仅此而已,它没有帮助您访问数据库。你必须在它上面基本上重写 pymongo。
最后,如果没有任何效果,我将只使用 aiohttp 而不是scrapy,我将向websito 发出请求以手动废弃并使用beautifulsoup 或类似的东西从响应中获取我需要的信息。
这意味着不使用scrapy需要做很多工作,而且它不会帮助你解决pymongo问题——你仍然需要重写pymongo!
我的建议是——学习txmongo
!如果您不能并且想要重写它,请使用twisted.web
来编写它而不是aiohttp
从那时起您可以继续使用scrapy
!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句