我基本上是在尝试启动HTTP服务器,该服务器将使用我可以使用Scrapy抓取的网站内容进行响应。为了开始爬网网站,我需要登录并这样做,我需要使用凭据等访问数据库。这里的主要问题是我需要所有东西都是完全异步的,到目前为止,我一直在努力寻找一种组合,这种组合将使所有东西在没有很多草率实现的情况下都能正常工作。
我已经让Klein + Scrapy工作了,但是当我实现数据库访问时,我全都陷入了混乱。有没有什么方法可以使PyMongo与扭曲或类似的东西异步(是的,我看过TxMongo,但是文档非常糟糕,我想避免使用它。我也找到了adbapi的实现,但是我想更类似于PyMongo的东西)。
尝试通过另一种方式思考问题,我确信aiohttp还有更多选项来实现async
数据库访问和其他操作,但是后来我发现自己在Scrapy集成方面陷入了僵局。
我见过诸如scrapa,scrapyd和ScrapyRT之类的东西,但是那些对我来说并不真正有用。还有其他选择吗?
最后,如果什么都不起作用,我将仅使用aiohttp,而不是Scrapy,而是向websito发送请求以手动进行抓取,并使用beautifulsoup或类似的方法从响应中获取所需的信息。关于如何沿着这条路前进的任何建议?
感谢您的关注,我在这个领域是个菜鸟,所以我不知道自己是否完全有道理。无论如何,我们将不胜感激:)
答案 0 :(得分:0)
有什么方法可以使pymongo与扭曲异步
不。 pymongo被设计为一个同步库,如果没有基本重写,就无法使其异步(可以使用线程或进程,但这不是您要的,您还可能遇到线程安全性问题)。代码)。
尝试通过另一种方式思考问题,我相信aiohttp还有更多选项可以实现异步数据库访问和操作
不是。 aiohttp
是一个http库-它可以异步执行http,仅此而已,它无助于您访问数据库。您必须基本上在上面重写pymongo。
最后,如果什么都不起作用,我将使用aiohttp而不是scrapy,而是向websito发送请求以手动进行抓取,并使用beautifulsoup或类似的方法从响应中获取所需的信息。
这意味着不使用scrapy,需要做很多工作,并且不会解决pymongo问题-您仍然必须重写pymongo!
我的建议是-学习txmongo
!如果您不能并且想要重写它,请使用twisted.web
而不是aiohttp
来编写它,因为这样您就可以继续使用scrapy
!