您好我正在尝试使用HTML Agilty Pack解析网页以获取图像的src。这是页面的结构。
<div class="post_body">
<div style="text-align: center;">
<a href="http://www.engadget.com/2012/02/29/qualcomm-windows-8/">
<img src="http://www.blogcdn.com/www.engadget.com/media/2012/02/201202297192-1330536971.jpg" style="border-width: 0px; border-style: solid; margin: 4px;">
</a>
</div>
<div>
现在我正在使用此代码尝试获取src
HtmlWeb hw = new HtmlWeb();
HtmlDocument doc = hw.Load("http://www.engadget.com/2012/02/29/qualcomm-windows-8");
HtmlNode baseNode = doc.DocumentNode.SelectSingleNode("//div[@class='post_content permalink ']");
string Description = baseNode.SelectSingleNode("//div[@class='post_body']").InnerText.Replace("\n", "").Replace("\r", "").Trim();
string href = baseNode.SelectSingleNode("//div[@class='post_body']//img[@src]").InnerText;
但是字符串始终返回null:/
任何想法可能我都有一个糟糕的xpath表达式?
答案 0 :(得分:2)
任何想法可能我都有一个糟糕的xpath表达式?
是的,有一些问题:
//div[@class='post_content permalink ']
这不会选择任何内容,因为在提供的文档中没有div
class
属性,其值为'post_content permalink '
SelectSingleNode("//div[@class='post_body']//img[@src]").InnerText;
img
元素,即使找到了这个元素,也没有子元素 - 因此没有innerText
。
<强>解决方案强>:
你想要这样的东西:
HtmlNode img = doc.DocumentNode.SelectSingleNode(//div[@class='post_body']//img[@src])
String srcUrl = img.Attributes["src"].Value;