Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 有没有可能用ChereIO刮去React网站(Instagram)?_Node.js_Web Scraping_Reactjs_Cheerio - Fatal编程技术网

Node.js 有没有可能用ChereIO刮去React网站(Instagram)?

Node.js 有没有可能用ChereIO刮去React网站(Instagram)?,node.js,web-scraping,reactjs,cheerio,Node.js,Web Scraping,Reactjs,Cheerio,我正试图用Node.js/Cheerio删除Instagram(用React构建)。调试文档时显示返回的对象,但它看起来不像典型的响应 我猜这和React有关。有没有办法绕过这个问题,用Cheerio来解析呈现的DOM?还是我完全遗漏了什么?在一般情况下——如果网站对SEO友好,可以通过欺骗网络爬虫的用户代理字符串来实现。这将返回可由ChereIO解析的呈现DOM 在特定情况下,Instagram会在其移动网站上返回呈现的DOM。欺骗移动电话的用户代理字符串,您可以解析返回的数据 v

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

我猜这和React有关。有没有办法绕过这个问题,用Cheerio来解析呈现的DOM?还是我完全遗漏了什么?

在一般情况下——如果网站对SEO友好,可以通过欺骗网络爬虫的用户代理字符串来实现。这将返回可由ChereIO解析的呈现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

        }
      }

没有代码,没有准确的错误信息,没有准确的复制步骤,我猜你错过了。当然,有了键盘和调试器,你甚至可以用
React
Cheerio
创建网站。但是你可能需要一些更强大的工具,比如
PhantomJS
或者
SeleniumHQ
能够运行脚本,等待它们的执行等等。这是一个概念性的问题,有一个二进制的答案——感谢你的帮助。亲爱的@Kyle,帮助是基于观点的。我相信你的问题还不够好,你可以改进它。我在你的问题中看不到“概念”。二元答案是肯定的,这是可能的。但您调试文档的确切含义是什么?什么文件?错误信息是什么?你想繁殖吗?很公平。我已经把答案贴在下面了。代码如下,减去用户代理。不幸的是,没有JSFIDLE,因为这是服务器端代码,也没有错误消息,因为返回了一个响应,只是没有一个可由ChereIO解析的响应(React创建了一个虚拟DOM)。您能解释一下“ChereIO无法解析移动网站上呈现的虚拟DOM”吗?从非oofed查询返回的一些“请参阅”超链接或一些
html
snippet示例?让别人理解你发现并解决了什么样的问题?我知道什么是instagram、node.js、cheerio、html、css、javascript、文档对象模型、搜索引擎优化和其他东西,但我仍然发现很难想象你在看电脑屏幕时看到了什么…@Kyle:我找不到一个可以在我的桌面上为instagram打开的移动网站。请给一个链接,如果你有。谢谢。您必须更改您的用户代理字符串。您可以使用Chrome浏览器模拟或在Cheerio选项中执行此操作,就像我在上面所做的那样。@KyleChadha感谢您发布此消息。无论您是否使用过搜索引擎/mobile UA,当网站返回相同的React字符串时,您是否曾尝试进一步采用此概念?@KyleChadha实际上,刚刚发现: