跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 如何让 scrapy 返回数据?
未分類
19 7 月 2020

如何让 scrapy 返回数据?

如何让 scrapy 返回数据?

資深大佬 : smallgoogle 7

如何让 scrapy 抓取完成之后的结果返回到 shell 窗口;

我想实现的是,a 用户发起一个抓取请求,后端接收到请求,调起 scrapy 进行抓取,然后返回数据到 a 用户那。。
我想问一下,这个结构,如何实现?
我所知道的,大概就仅仅是用命令运行爬虫,然后存入库。。然而我并不想让他存库。我想让他把结果返回出去。。
那如果我使用 python 的 subprocess 执行命令,获取 shell 的返回值,然后返给 a 用户,你们觉得这样是可行的吗?

大佬有話說 (15)

  • 資深大佬 : liuxu

    直接 run spider,默认直接命令行输出

  • 資深大佬 : zone10

    建议看看 scrapy item pipeline

  • 資深大佬 : perpetually

    你是想不入库,直接从目标网站把数据抓取下来返回给 a 用户?
    pipline 里面你不写入库的逻辑,直接启动 scrapy 返回的数据不就输出再页面上么?
    你把这个数据的数据直接返给 a 不就行了

  • 資深大佬 : caijihui11

    返回数据,print, 打 log 都可以

  • 主 資深大佬 : smallgoogle

    @perpetually 我是想通过用户请求一个 API,后端启动爬虫,然后返回数据给用户。你说在 pipline 这里处理,这里是每次都是单条处理的,返回数据给用户只能一次,这里就没发持续返回了。除非用 socket

  • 資深大佬 : jugelizi

    给 api 就启动一个 python 的 http 服务呗 请求来了就抓取并输出结束

  • 資深大佬 : weiye265

    使用 api

  • 資深大佬 : cy476571989

    @smallgoogle Breword 翻译工具里面有用到 scrapy 去抓取 github 文档内容,我想我的这个场景能够满足你的需求。

    scrapy 需要用 scrapyd 来进行部署,运行在后台,用户发送请求到 scrapyd 接口, scrapyd 会调用一个 spider 去抓取内容,这里 scrapyd 接口会迅速返回,所以,用户请求 和 scrapy 运行之间是异步的关系,你没法一次性拿到 scrapy 返回的数据,只能是先将 scrapy 抓取的内容存储下来,比如,存在数据库里面,然后调用一个 callback, 通知用户,内容已经抓取完毕,然后用户再通过一个接口去获取存储的内容。

    本质上整个过程是异步的,而且网络请求耗时不确定,所以无法一次性返回抓取的数据。

    可以去 www.breword.com 试试创建一个项目,就能体验整个过程了。

    希望这个回答对你有帮助。

  • 資深大佬 : warcraft1236

    @cy476571989 我有点好奇,callback 的发送时机是怎么触发的,scrapy 有 pipeline 地方知道这是最后一个需要处理的抓取数据吗?

  • 資深大佬 : tikazyq

    为啥不用 Crawlab ?不止是 scrapy,连其他语言的爬虫例如 java 、go 、php 都可以管理

    https://github.com/crawlab-team/crawlab

  • 資深大佬 : zdnyp

    close_spider 里处理

  • 資深大佬 : cy476571989

    @warcraft1236 spider 的 pipeline 有一个 hook,叫 close_spider, 可以用来标志抓取是否完成,https://docs.scrapy.org/en/latest/topics/item-pipeline.html

  • 資深大佬 : brucedone

    scrapy 的定位是离线任务,你这种在线时时的,不如一个 http api 在后端里面一个 requests 请求更好

  • 資深大佬 : Vegetable

    实现的方式太多了,但是你这个显然与 scrapy 的传统思路不同,也不符合 Web 服务器设计的基本原则,需要自己动手实现。最简单的可以通过 scrapy redis 调度爬虫,直接在 redis 轮询等待结果,这样操作起来是比较符合认知的。如果直接操作 scrapy 的话,还涉及到爬虫冷启动什么的,太麻烦了。

  • 資深大佬 : Fizzyi

    何必一定要用 Scrapy 呢,自己手撸一个更适用

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具