V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
timqian
V2EX  ›  分享创造

CloudQuery: 把任意网站变成 API

  •  2
     
  •   timqian · 2019-01-24 17:07:22 +08:00 · 6395 次点击
    这是一个创建于 1219 天前的主题,其中的信息可能已经有所发展或是发生改变。

    源代码以及演示可以在这里看到: https://github.com/cloudfetch/cloudquery

    这个工具是从我的另一个项目抽取出来的 https://cloudfetch.info。感觉可以用这个用具从一些网站方便的得到一些数据以备创建新应用所有。希望对大家有用

    26 条回复    2019-12-02 22:30:36 +08:00
    stone666
        1
    stone666  
       2019-01-24 17:19:09 +08:00   ❤️ 1
    那? 12306 ?
    timqian
        2
    timqian  
    OP
       2019-01-24 18:47:24 +08:00 via Android
    @stone666 啥意思🤔
    kkkkkrua
        3
    kkkkkrua  
       2019-01-24 19:19:39 +08:00
    12306 出来的是 html #1
    natforum
        5
    natforum  
       2019-01-24 19:54:27 +08:00
    方便制作 app ?
    mingff258
        6
    mingff258  
       2019-01-24 19:59:57 +08:00
    不错,最近正好有这方面的需求,收藏了
    falcon05
        7
    falcon05  
       2019-01-24 20:02:37 +08:00 via iPhone
    雅虎有个 YQL 的东东,类似,不知道现在还能用吗?
    xomix
        8
    xomix  
       2019-01-24 20:26:19 +08:00   ❤️ 1
    这个是不是可以缩写成
    PaaA
    web Page as a web Api
    d5
        9
    d5  
       2019-01-24 20:45:29 +08:00   ❤️ 1
    太酷了,果断 star
    Tink
        10
    Tink  
       2019-01-24 21:05:06 +08:00 via iPhone   ❤️ 1
    6 啊!
    xqin
        11
    xqin  
       2019-01-24 21:46:59 +08:00
    反馈个 bug

    https://github.com/cloudfetch/cloudquery/blob/master/app.js#L63

    这里第 63 行,使用的变量未定义, 会变成全局变量, 变成全局之后, 会产生 bug.
    当 A 请求进来之后, 执行到 launchChrome 的时候,是一个 await,
    然后这时候 B 请求过来了, B 请求传入的 selectors 会覆盖 A 请求中后续 #130 行处理时的取值(会变成 B 的).

    即这个数据串了...
    xqin
        12
    xqin  
       2019-01-24 21:54:52 +08:00
    另外没有对传入的 selector 做一个基本的有效性验证, 可能导致下面这两处, 在 launch 出来的 Chrome 里面执行恶意脚本.
    比如 while(true) 等?
    https://github.com/cloudfetch/cloudquery/blob/master/app.js#L132
    https://github.com/cloudfetch/cloudquery/blob/master/app.js#L135
    xiaotuzi
        13
    xiaotuzi  
       2019-01-24 22:42:15 +08:00 via iPhone
    也就爬取链接和 dom,没有对应的链接…
    timqian
        14
    timqian  
    OP
       2019-01-24 22:59:41 +08:00
    @kkkkkrua
    @stone666 显示是可以显示的,要等一会儿页面加载一些其他东西。不过显示的有点问题,这个问题也存在于其他一些网站,因为这个工具是把 aws lambda 上的 chrome 渲染出来的 html 拿过来放到 iframe 里,有些外部 css img 什么的会不正常,暂时还没找到很好的解决办法。
    ![]( https://user-images.githubusercontent.com/5512552/51685840-2b60f300-202a-11e9-9742-f1ca5ab2f53e.png)

    @xqin 感谢!变量的问题代码是没太写好,这里是应该加个 const,之后加个 lint。有效性验证也是很必要的,明天改改,如果你能提个 issue 甚至是 PR 就更好了😜
    timqian
        15
    timqian  
    OP
       2019-01-24 23:01:17 +08:00
    @xiaotuzi 链接是可以有的,但是你要多点点,有时候点到 link 的爸爸 element 就没链接了,是个手艺活。。。
    imwalson
        16
    imwalson  
       2019-01-25 00:05:07 +08:00 via Android
    @falcon05 yql 以前我也用,现在已经黄了,关闭了
    xiaotuzi
        17
    xiaotuzi  
       2019-01-25 00:48:47 +08:00 via iPhone
    @timqian 可以转换下思路,直接获取软文的 link,然后输出来提供选择,那么就不会出现说点到其他 dom 了
    timqian
        18
    timqian  
    OP
       2019-01-25 08:55:20 +08:00 via Android
    @xiaotuzi 谢谢,也是一个新功能的方向
    Cbdy
        19
    Cbdy  
       2019-01-25 09:07:16 +08:00
    很遗憾,随便输入一个我正在访问的网站:Access Denied
    https://www.nike.com/cn/zh_cn/
    solobat
        20
    solobat  
       2019-01-25 11:07:19 +08:00   ❤️ 1
    感觉 GraphQL 的方式更方便呢
    https://github.com/dinubs/coolqlcool
    huruwo
        21
    huruwo  
       2019-01-25 11:40:08 +08:00
    我输入一个网站 转了半天没出来东西
    GitHubDaily
        22
    GitHubDaily  
       2019-01-25 11:54:16 +08:00   ❤️ 1
    看着不错,给推荐到微博上了

    https://weibo.com/5722964389/HdyIz2DSx
    timqian
        23
    timqian  
    OP
       2019-01-25 12:01:53 +08:00 via Android
    @huruwo
    @Cbdy 感谢反馈,现在这种 html 放 iframe 里的方式是会有些网站,会持续改进,并且之后会有浏览器插件形式,就不会有这个问题了
    @solobat 这个看了眼文档试了下,没太搞明白咋用。这个人做的另一个 website to json https://github.com/dinubs/jam-api 主题功能和 cloudquery 挺像,cloudquery 比他多了选择页面,他这个 deploy to now 可以学习下,给用户多种部署选择,感谢
    jisibencom
        24
    jisibencom  
       2019-01-25 16:35:27 +08:00 via Android
    有点以前 rss 烧录的感觉
    mrcode
        25
    mrcode  
       2019-01-26 15:47:04 +08:00
    令人耳目一新,要是支持预先设置 token 就好了,不然像 V2EX 某些节点没有 token 访问不了
    justin2018
        26
    justin2018  
       2019-12-02 22:30:36 +08:00
    nice 多谢~
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1062 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 21:04 · PVG 05:04 · LAX 14:04 · JFK 17:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.