Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html敏捷包中的XPath表达式问题_Xpath_Html Agility Pack - Fatal编程技术网

Html敏捷包中的XPath表达式问题

Html敏捷包中的XPath表达式问题,xpath,html-agility-pack,Xpath,Html Agility Pack,我正在使用Html Agility Pack对谷歌搜索结果执行基本的web抓取。作为XPath的新手,我确保我的路径表达式是正确的(在FirePath的帮助下)。但是,返回的HtmlNodeCollection始终为空 HtmlWeb web = new HtmlWeb(); HtmlAgilityPack.HtmlDocument htmlDoc = web.Load("http://www.google.com/search?num=10&q=Hello+World"); // g

我正在使用Html Agility Pack对谷歌搜索结果执行基本的web抓取。作为XPath的新手,我确保我的路径表达式是正确的(在FirePath的帮助下)。但是,返回的HtmlNodeCollection始终为空

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中,
ires
div存在,但是在运行javascript之前,
rso
不会被插入,因此不会得到任何结果。这里还有其他一些转换,您也需要进行调整

下面是HTML的一个片段:

<div id="ires">
    <ol>
        <li class="g">
            <h3 class="r">
                <a href="...">...</a>

使用
g
类更容易找到所有
li
,因为它们对应于所有结果。您需要使用
r
类过滤所有
h3
,否则您将包含其他结果(例如图像结果)。

您太棒了,杰夫。非常感谢。
var xpath = "//li[contains(concat(' ',@class,' '),' g ')]" +
            "/h3[contains(concat(' ',@class,' '),' r ')]" +
            "/a/@href";