理想是火,点燃熄灭的灯。
需求:之前使用node做爬虫的时候,使用puppeteer来模拟浏览器
然后抓取信息
但是这样的效率和消耗太大了,
所以需要一种更为效率的方法:直接使用axios来请求对应的url
然后通过jsDom,渲染成一个虚拟的html然后进行取值
废话不多说直接上代码:
先安装jsdom
npm i jsdom
然后写下面实例化
const jsdom = require("jsdom"); const { JSDOM } = jsdom; const dom = new JSDOM(`<!DOCTYPE html><p>Hello world</p>`); console.log(dom.window.document.querySelector("p").textContent); // "Hello world"
基础的代码逻辑明白了之后,
把它使用到我们正常的业务里面:
axios .get(url) .then((res) => { //注意:需要先return 一次 再下一个回调里面进行渲染,因为获取的html数据多的时候 就可能导致实例化失败 return res.data; }) .then((html) => { let dom = new JSDOM(`${html}`); //抓取到想要的元素的信息 console.log( dom.window.document.querySelector(".product-single__title").textContent ); });
"jsdom": "16.7.0",
作者: Bill 本文地址: http://biaoblog.cn/info?id=1633921071061
版权声明: 本文为原创文章,版权归 biaoblog 个人博客 所有,欢迎分享本文,转载请保留出处,谢谢!
上一篇:函数盗用
下一篇:关于懒加载数据的获取