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

时间:2015-04-17 14:53:12

标签: node.js web-scraping reactjs cheerio

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

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

提前致谢。

1 个答案:

答案 0 :(得分: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

        }
      }