使用Xpath和HtmlAgilityPack,节点为NULL
本文关键字:节点 NULL HtmlAgilityPack Xpath 使用 | 更新日期: 2023-09-27 18:11:50
我已经为imdb网站写了一个抓取器,现在我需要解析页面。我要用htmllagilitypack
例如,我下载了这个页面:链接到IMDb
我保存它作为@" D: ' IMDb.htm "从这一页,我需要采取的行,其中审查的有用性是指定的,例如1770的2062人发现以下审查有用:从第一次审查。
我的代码是下一个,我希望Xpath是正确的,但我的节点是NULL在结束(
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using HtmlAgilityPack;
static void Main(string[] args)
{
var doc = new HtmlDocument();
doc.LoadHtml("D:''IMDb.htm");
Console.WriteLine("res", GetDescription("D:''IMDb.htm"));
Console.ReadLine();
}
public static string GetDescription(string html)
{
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.OptionFixNestedTags = true;
doc.Load(new StringReader(html));
HtmlNode node = doc.DocumentNode.SelectSingleNode("//*[@id='tn15content']/div[1]/small[1]");
return node.InnerHtml;
}
希望能得到你的帮助,因为我不明白是怎么回事。
您不应该在这里使用StringReader
,因为html
变量包含要加载的HTML文件的路径,而不是它本身的HTML标记:
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.OptionFixNestedTags = true;
doc.Load(html);
HtmlNode node = doc.DocumentNode.SelectSingleNode("//*[@id='tn15content']/div[1]/small[1]");
return node.InnerHtml;
即使html
包含标记,您也可以使用HAP的内置函数doc.LoadHtml(html)
。