我基本上正在尝试启动一个HTTP服务器,它将响应来自一个网站的内容,我可以使用Scrapy抓取。为了开始爬行的网站,我需要登录到它,这样做,我需要访问一个数据库的凭据等。这里的主要问题是,我需要所有的东西都是完全异步的,到目前为止,我正在努力寻找一种组合,使所有东西都能正常工作,而不需要太多草率的实现。在
我已经让Klein+Scrapy工作了,但是当我开始实现DB访问时,我的脑子里全乱了。有没有什么方法可以让PyMongo异步使用twisted或其他东西(是的,我见过TxMongo,但是文档非常糟糕,我想避免它。我还发现了一个使用adbapi的实现,但我希望有更类似于PyMongo的实现)。在
我确信aiohttp有更多的选择来实现async
db访问和其他东西,但是我发现自己陷入了一个与糟糕的集成有关的僵局。在
我见过像scrapa、scrapyd和ScrapyRT之类的东西,但这些东西对我来说并不管用。还有其他选择吗?在
最后,如果什么都不起作用,我将使用aiohttp,而不是Scrapy,我将向websito发出请求,手动删除并使用beauthulsoup或类似的东西从响应中获取我需要的信息。你有什么建议吗?在
谢谢你的关注,我在这方面是个无名小卒,所以我不知道我是否完全有道理。不管怎样,任何帮助我们都会感激的:)
不,pymongo被设计成一个同步库,如果不重写它,你是不可能使它异步的(你可以使用线程或进程,但这不是你所要求的,也可能会遇到代码的线程安全性问题)。在
它没有。
aiohttp
是一个http库-它可以异步执行http,也就是说,它对访问数据库没有任何帮助。基本上你必须在上面重写pymongo。在这意味着不使用scrapy需要做很多工作,而且它对pymongo问题也没有帮助——你仍然需要重写pymongo!在
我的建议是-学习},此后您可以继续使用
txmongo
!如果您不能并且想重写它,请使用twisted.web
来编写它,而不是{scrapy
!在相关问题 更多 >
编程相关推荐