使用 React Native 进行 Web 抓取和注入 JavaScript 的最佳方法?

Posted

技术标签:

【中文标题】使用 React Native 进行 Web 抓取和注入 JavaScript 的最佳方法?【英文标题】:Best way to Web-scrape and inject JavaScript using React Native? 【发布时间】:2016-10-22 07:37:31 【问题描述】:

我最近开始使用 React Native 来开发一个涉及网络抓取的应用程序。我们一直在使用一个名为 React Native WebView Bridge 的组件,它类似于 Obj-C 中的 UIWebViewBridge 库,但存在一些问题。由于 React Native 是异步的,我们在返回信息时遇到了麻烦,因为应用程序使用 WebView Bridge 经常且不可预测地调用渲染函数。 WebView Bridge模块有时会调用我们注入的javascript 1次,有时会调用3次。

有没有更好的方法在 React Native 中有效地抓取信息和注入 javascript?

这是我们使用的用于 React Native 的 WebViewBridge 的链接。

【问题讨论】:

【参考方案1】:

我使用cheerio 来解析来自网站的 html 内容,将其转换为 JSON 并使用它来提供 React 组件。通过这种方式,您可以获得使用 React Native 的好处,而不仅仅是混合 Web 应用程序。

你可以在这个 React Native 应用中找到它的一个例子:https://github.com/stan229/ClubReadyApp

【讨论】:

你能说得更具体一点吗?您不会将 HTML 渲染到 DOM,但如果您想添加一些属性(例如,类、id、更改 innerHTML),您可以。我遵循并且通常会推荐的工作流程(不知道您的情况的所有细节)是从 HTML 文档中抓取您需要的数据,使用它来渲染组件并使用 React Native 处理业务交互。 很抱歉。我所说的操纵的意思是你能用这种方法注入javascript吗?例如单击按钮或在文本字段中输入内容。我希望能够做到这一点,而我的注入脚本不会被 React 的渲染方法多次调用。是不是清楚一点?

以上是关于使用 React Native 进行 Web 抓取和注入 JavaScript 的最佳方法?的主要内容,如果未能解决你的问题,请参考以下文章

从 React Native webView 自动使用 Web 应用程序进行身份验证

如何在 react-native webView 和 React web-app 之间进行通信?

为啥 react-native 包使用原生 SDK 而不是 JS/web 版本?

React Native TextInput 抓取突出显示的文本,并在我点击离开时保持突出显示

使用 react-native-web 实现组件

React Native教程 - 调用Web API