【问题标题】:Extract text from Website with Cordova使用 Cordova 从网站中提取文本
【发布时间】:2017-05-15 19:32:27
【问题描述】:

我正在开发一个移动应用程序,我想使用 Cordova 从一个不是我的网站中提取文本值,我用谷歌搜索但找不到有效的示例。有没有插件可以做到这一点?

由于访问源策略,我无法使用 Ajax 执行此操作。

谢谢

【问题讨论】:

    标签: cordova web-scraping phonegap-plugins cordova-plugins


    【解决方案1】:

    可能的方法:

    • 使用 inAppbrowser 加载页面并在该页面中运行脚本以提取使用跨浏览器通信所需的元素。阅读此article,其中说明了如何操作。
    • 在 ajax 调用中加载页面并使用正则表达式基于标记解析响应,或使用此 API 将响应转换为 HTML 标记并通过 JS API 查询 DOM。阅读这个有趣的article 混合应用程序中的网络抓取,由Ashteya Biharisingh 解释
    • 使用运行在 Node.js 服务器上的库 JSDOM。通过使用这个库,您可以在 NodeJS 环境中加载网页并使用流行的 Jquery API 提取 dom 部分。这需要一个中间服务器并卸载抓取逻辑。

    【讨论】:

      【解决方案2】:

      由于您提到的 CORS 问题,我怀疑这种方法是否实用。

      最好的办法是创建自己的 API 或微服务来抓取和公开这些数据以供 Cordova 应用使用。这也便于在必要时缓存数据。

      【讨论】:

      • 我尝试使用我的服务器来抓取该数据,但外部域会根据 IP 更改值,这对每个用户都不起作用。
      • 听起来有点像一个不寻常的用例。如果第三方站点有一个 API,您可以使用它来获取该数据,那将是理想的。否则,抓取网站可能是实现它的唯一方法。
      • 您的用例到底是什么?如果我能更多地了解您想要做什么,这可能会有所帮助。
      • 该网站正在提供基于 IP 的流媒体链接,我想从该网站获取该链接并将其放入我的应用程序中。
      【解决方案3】:

      我想你需要Cordova whitelist plugin。正如您在页面底部看到的,对于 AJAX 和其他请求,您将需要以下元标记

      <!-- This policy allows everything (eg CSS, AJAX, object, frame, media, etc) except that 
          * CSS only from the same origin and inline styles,
          * scripts only from the same origin and inline styles, and eval()
      -->
      <meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'">
      

      【讨论】:

        猜你喜欢
        • 2020-10-31
        • 2023-03-07
        • 1970-01-01
        • 2021-11-29
        • 2019-05-23
        • 2020-01-09
        • 2015-09-16
        • 2018-04-13
        • 1970-01-01
        相关资源
        最近更新 更多