可以用Cheerio刮掉React网站(Instagram)吗?

Kyl*_*dha 7 node.js web-scraping cheerio reactjs

我正试图用Node.js/Cheerio刮掉Instagram(用React构建).调试文档显示返回的对象,但它看起来不像典型的响应.

我猜这与React有关.有没有办法绕过这个,拉动渲染的DOM来解析Cheerio?或者我完全错过了什么?

提前致谢.

Kyl*_*dha 7

在一般情况下 - 如果网站是SEO友好的,您可以通过欺骗网络爬虫的用户代理字符串来实现.这将返回一个可由Cheerio解析的呈现DOM.

在特定情况下 - Instagram在其移动网站上返回呈现的DOM.欺骗手机的用户代理字符串,您可以解析返回的数据.

      var options = {
        url: user.instagram_url,
        headers: {
          'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/600.1.3 (KHTML, like Gecko) Version/8.0 Mobile/12A4345d Safari/600.1.4'
        }
      };

      request(options, function(error, response, html) {
        if (!error) {

          console.log('Scraper running on Instagram user page.');

          // Use Cheerio to load the page.
          var $ = cheerio.load(html);

          // Code to parse the DOM here

        }
      }
Run Code Online (Sandbox Code Playgroud)