python中的scrapy和mongodb异步HTTP服务器

2024-09-27 21:30:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我基本上正在尝试启动一个HTTP服务器,它将响应来自一个网站的内容,我可以使用Scrapy抓取。为了开始爬行的网站,我需要登录到它,这样做,我需要访问一个数据库的凭据等。这里的主要问题是,我需要所有的东西都是完全异步的,到目前为止,我正在努力寻找一种组合,使所有东西都能正常工作,而不需要太多草率的实现。在

我已经让Klein+Scrapy工作了,但是当我开始实现DB访问时,我的脑子里全乱了。有没有什么方法可以让PyMongo异步使用twisted或其他东西(是的,我见过TxMongo,但是文档非常糟糕,我想避免它。我还发现了一个使用adbapi的实现,但我希望有更类似于PyMongo的实现)。在

我确信aiohttp有更多的选择来实现asyncdb访问和其他东西,但是我发现自己陷入了一个与糟糕的集成有关的僵局。在

我见过像scrapa、scrapyd和ScrapyRT之类的东西,但这些东西对我来说并不管用。还有其他选择吗?在

最后,如果什么都不起作用,我将使用aiohttp,而不是Scrapy,我将向websito发出请求,手动删除并使用beauthulsoup或类似的东西从响应中获取我需要的信息。你有什么建议吗?在

谢谢你的关注,我在这方面是个无名小卒,所以我不知道我是否完全有道理。不管怎样,任何帮助我们都会感激的:)


Tags: 方法服务器数据库http内容dbaiohttp网站
1条回答
网友
1楼 · 发布于 2024-09-27 21:30:14

Is there any way to make pymongo asynchronous with twisted

不,pymongo被设计成一个同步库,如果不重写它,你是不可能使它异步的(你可以使用线程或进程,但这不是你所要求的,也可能会遇到代码的线程安全性问题)。在

Trying to think things through the other way around I'm sure aiohttp has many more options to implement async db accesses and stuff

它没有。aiohttp是一个http库-它可以异步执行http,也就是说,它对访问数据库没有任何帮助。基本上你必须在上面重写pymongo。在

Finally, if nothing works, I'll just use aiohttp and instead of scrapy I'll do the requests to the websito to scrap manually and use beautifulsoup or something like that to get the info I need from the response.

这意味着不使用scrapy需要做很多工作,而且它对pymongo问题也没有帮助——你仍然需要重写pymongo!在

我的建议是-学习txmongo!如果您不能并且想重写它,请使用twisted.web来编写它,而不是{},此后您可以继续使用scrapy!在

相关问题 更多 >

    热门问题