2016-07-05 55 views
1

我试图从Instagram配置文件中获取一些信息。 我使用Google Chrome生成了XPathC# - SelectNode HtmlAgilityPack返回空

//*[@id="react-root"]/section/main/article/div/div[1]/div 

但是,没有发现任何东西。 我只能找到了

//*[@id="react-root"] 

这是一个**<span>**

没有更多的所在地,是有什么原因吗?难道我做错了什么?

var baseURL = "https://www.instagram.com/"; 

var client = new HtmlWeb(); 


var paginaPerfil = client.Load(baseURL + "belalao"); 


var nos = paginaPerfil.DocumentNode.SelectNodes("//*[@id='react-root']/section/main/article/div/div[1]/div"); 
      var quantidade = nos == null ? 0 : nos.Count; 

回答

1

在这个时刻,https://www.instagram.com/belalao有一个空<span id="react-root"></span>,让你的代码工作正常。也许你期待的是将用React组件执行的DOM填充DOM,但HtmlAgilityPack将只分析你下载的HTML的,不执行JavaScript并在之后进行分析。

查看页面上的源代码(与使用DOM检查器不一样),然后您将看到它所看到的内容。

+0

该死的真相。我现在知道了。 有没有什么办法可以在执行JavaScript之后获取HTML代码? –

+0

您可以尝试使用像PhantomJS这样的无头浏览器。我不确定React是否兼容。 – Jacob