相关背景
本人学生,最近在做安卓的作业,使用了React-Native进行开发。需要实现的效果是在安卓本地实现爬虫,爬取网页,进行解析。
与在PC端爬取数据是类似的,都是先读取html,在使用工具解析。 我在这里使用的是:
- 网络: React-Native自带的fetch
- html解析 : cheerio-without-node-native(由于cheerio部分依赖js在PC上的IO操作,具体是哪部分代码忘了,不能够在安卓端使用,所以需要纯js实现的cheerio,这个包就很好。)
我主要遇到的问题是
在开发过程中,当使用到fetch的json方法或者text方法,有时候就会出现这样的问题.
fetch('http://www.fitnes.cn/jianshen')
.then(res => { return res.blob(); })
.then(blobs => {
}
我的解决方法是查阅了相关资料后,我的解决方法是: 使用axios,axios是封装了XMLHttpRequests ,这个对象在react-native中同样存在,使用axios会比fetch稳定许多。
另外还有一点就是,如果非要使用fetch,注意区分fetch的浏览器方法和react-native中提供的方法。例如blob就是only浏览器提供的方法,在非远程调试模式下,使用也会报上面的错。
在调试模式下能使用很多非react-native的浏览器方法,我猜想这是因为开启远程调试后,浏览器的全局变量对react-native上的变量造成了污染,所以在远程调试中能使用很多浏览器方法,非常神奇!
这个问题的 github issue
可能我说的也有错,欢迎大家指正