您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何整合Flask&Scrapy?

如何整合Flask&Scrapy?

在你的Spider前面添加HTTP服务器并不是那么容易。有几种选择。

所有示例的目录结构应如下所示,我正在使用dirbot测试项目

这是在新过程中启动Scrapy的代码示例:

将其另存为server.py并访问localhost:5000,你应该可以看到被抓取的项目。

其他更好的方法是使用一些现有项目,该项目将Twisted与Werkzeug集成在一起,并显示类似于Flask的API,例如Twisted-Klein。Twisted-Klein允许你在与Web服务器相同的过程中异步运行蜘蛛。最好不要在每个请求上都阻塞,它使你可以简单地从HTTP路由请求处理程序返回Scrapy / Twisted延迟。

代码片段将Twisted-Klein与Scrapy集成之后,请注意,你需要创建自己的CrawlerRunner基类,以便Crawler可以收集项目并将其返回给调用方。此选项稍微高级一些,你正在以与Python服务器相同的方式运行Scrapy Spider,项目不是存储在文件中而是存储在内存中(因此,与前面的示例一样,没有磁盘写/读操作)。最重要的是,它是异步的,并且都在一个Twisted反应器中运行。

将上面的内容保存在server.py文件中,并将其放在你的Scrapy项目目录中,现在打开localhost:8080,它将启动dmoz spider并将作为json抓取的项目返回到浏览器。

当你尝试在蜘蛛程序前面添加HTTP应用程序时,会出现一些问题。例如,你有时需要处理蜘蛛日志(在某些情况下可能需要它们),需要以某种方式处理蜘蛛异常等。有些项目可让你以更简单的方式向蜘蛛添加HTTP API,例如ScrapyRT。这是一个将HTTP服务器添加到你的Scrapy Spiders并为你处理所有问题(例如,处理日志记录,处理Spider错误等)的应用程序。

因此,在安装ScrapyRT之后,你只需要执行以下操作:

Python 2022/1/1 18:23:59 有310人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶