使用 Cordova 从网站中提取文本
Extract text from Website with Cordova
我正在开发一个移动应用程序,我想使用 Cordova 从一个不是我的网站提取文本值,我用谷歌搜索但找不到有效的示例。有插件吗?
由于访问源策略,我无法使用 Ajax 执行此操作。
谢谢
由于您提到的 CORS 问题,我怀疑这种方法是否实用。
您最好的选择是创建您自己的 API 或微服务来抓取和公开该数据以供您的 Cordova 应用程序使用。这也使得在必要时缓存数据变得容易。
我想你会需要 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'">
可能的方法:
- 使用 inAppbrowser 加载页面,运行 使用该页面中的脚本提取使用跨浏览器通信所需的元素。阅读此 article,其中解释了如何操作。
- 在 ajax 中加载页面,使用正则表达式调用并解析基于标记的响应,或使用此 API and query DOM via JS API. Read this interesting article on web scraping in Hybrid app explained by Ashteya Biharisingh
将响应转换为 HTML 标记
- 使用 Node.js 服务器上 运行 的库 JSDOM。通过使用此库,您可以在 NodeJS 环境中加载网页并使用流行的 Jquery API 提取 dom 部分。这需要一个中间服务器并卸载抓取逻辑。
我正在开发一个移动应用程序,我想使用 Cordova 从一个不是我的网站提取文本值,我用谷歌搜索但找不到有效的示例。有插件吗?
由于访问源策略,我无法使用 Ajax 执行此操作。
谢谢
由于您提到的 CORS 问题,我怀疑这种方法是否实用。
您最好的选择是创建您自己的 API 或微服务来抓取和公开该数据以供您的 Cordova 应用程序使用。这也使得在必要时缓存数据变得容易。
我想你会需要 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'">
可能的方法:
- 使用 inAppbrowser 加载页面,运行 使用该页面中的脚本提取使用跨浏览器通信所需的元素。阅读此 article,其中解释了如何操作。
- 在 ajax 中加载页面,使用正则表达式调用并解析基于标记的响应,或使用此 API and query DOM via JS API. Read this interesting article on web scraping in Hybrid app explained by Ashteya Biharisingh 将响应转换为 HTML 标记
- 使用 Node.js 服务器上 运行 的库 JSDOM。通过使用此库,您可以在 NodeJS 环境中加载网页并使用流行的 Jquery API 提取 dom 部分。这需要一个中间服务器并卸载抓取逻辑。