node 解决爬虫爬不到前端异步数据问题

原因:爬虫能直接爬到页面渲染内容,对于H5文件元素渲染完毕后、通过JS重新请求数据创建的内容,并不能拿到。

解决:虚拟一个浏览器,等待页面数据完全加载完毕,再获取页面内容。使用到的三方库:puppeteer(谷歌浏览器官方组件)、cheerio(最流行的h5标签元素解析组件),具体代码如下,需要自取:

     var cheerio = require('cheerio');

      var url = 'https://xxx.com/xxx';

      const puppeteer = require('puppeteer');//github传送门 官网传送门

      const browser = await puppeteer.launch({args: ['--no-sandbox']});

      const page = await browser.newPage();

      await page.goto(url);

      setTimeout(async function(){

          const bodyHandle = await page.$('body');

          const html = await page.evaluate(body => body.innerHTML, bodyHandle)

          let $ = cheerio.load(html)

          $('.content_item').each( function(i, el) {

            var title = $(el).find('.item_key').text();

            console.log(title);

          });

          await bodyHandle.dispose();

          await browser.close();

      },500);

centos系统使用报错解决:https://www.jianshu.com/p/ba616ca1c7c2

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容