C#Html Agility Pack(SelectSingleNode)

jos*_*osh 7 html c# parsing html-agility-pack

我正在尝试解析这个字段,但无法让它工作.目前的尝试:

var name = doc.DocumentNode.SelectSingleNode("//*[@id='my_name']").InnerHtml;


<h1 class="bla" id="my_name">namehere</h1>
Run Code Online (Sandbox Code Playgroud)

错误:对象引用未设置为对象的实例.

感谢任何帮助.

@John - 我可以保证HTML已正确加载.我正在尝试阅读我的Facebook名称以用于学习目的.这是Firebug插件的截图.我使用的版本是1.4.0.

http://i54.tinypic.com/kn3wo.jpg

我想问题是profile_name是一个子节点或什么的,这就是为什么我无法读取它?

Joh*_*sch 19

您的代码不起作用的原因是因为页面上有JavaScript实际写出<h1 id='profile_name'>标记,所以如果您从不执行JavaScript的用户代理(或通过AJAX)请求页面,那么您赢了找不到元素.

我可以使用以下选择器获取自己的名字:

string name = 
    doc.DocumentNode.SelectSingleNode("//a[@id='navAccountName']").InnerText;
Run Code Online (Sandbox Code Playgroud)


dub*_*tor 0

尝试这个:

var name = doc.DocumentNode.SelectSingleNode("//@id='my_name'").InnerHtml;
Run Code Online (Sandbox Code Playgroud)