XPath Expression Issue in Html Agility Pack
我正在使用 Html Agility Pack 对 Google 搜索结果进行基本的网络抓取。作为 XPath 的新手,我确保我的路径表达式是正确的(在 FirePath 的帮助下)。但是,返回的 HtmlNodeCollection 始终为 NULL。
1 2 3 4 5 6 7 8 9 10 | HtmlWeb web = new HtmlWeb(); HtmlAgilityPack.HtmlDocument htmlDoc = web.Load("http://www.google.com/search?num=10&q=Hello+World"); // get search result URLs var items = htmlDoc.DocumentNode.SelectNodes("//div[@id='ires']/ol[@id='rso']/li/div[@class='vsc']/h3/a/@href"); foreach (HtmlNode node in items) { Console.WriteLine(node.Attributes); } |
我错过了什么吗?哪位大神能指教一下吗?
提前致谢,
HAP 只能处理从 url 返回的原始 HTML,它不会运行页面上的任何其他 javascript 或诸如此类的东西。您需要相应地调整您的查询。
在原始 HTML 中,存在
这是 HTML 的片段:
1 2 3 | <li class="g"> <h3 class="r"> ... |
用于此的更合适的 xpath 是:
1 2 3 | var xpath ="//li[contains(concat(' ',@class,' '),' g ')]" + "/h3[contains(concat(' ',@class,' '),' r ')]" + "/a/@href"; |
使用