从标记

时间:2016-07-21 02:24:23

标签: c# web-scraping html-agility-pack

提前感谢您提供的任何帮助。我试图用HtmlAgilityPack抓取一些HTML并且遇到XPATH语法问题。我正在处理的HTML有多个标签,我想要访问<< p>。

<p class="row" data-pid="5687754180">
    <a href="/bod/5687754180.html" class="i gallery" data-ids="1:00c0c_fapkFsQg3Dx">
        <span class="price">$5000</span>
    </a>
    <span class="txt">
        <span class="pl">
            <span class="icon icon-star" role="button">
                <span class="screen-reader-text">
                    <? __("favorite this post") ?>
                </span>
            </span>
            <time datetime="2016-07-17 19:36" title="Sun 17 Jul 07:36:03 PM">Jul 17</time> <a href="/bod/5687754180.html" data-id="5687754180" class="hdrlnk">
                <span id="titletextonly">&#9735;&#9735;&#9812;&#9812;&#9812;&#9812;&#9812;1998 Mastercraft Prostar&#12963</span>
            </a>
        </span>
        <span class="l2">
            <span class="price">$5000</span>
            <span class="pnr">
                <span class="px">
                    <span class="p"> pic</span>
                </span>
            </span>
        </span>
        <span class="js-only banish-unbanish">
            <span class="banish">
                <span class="icon icon-trash" role="button"/>
                <span class="screen-reader-text">hide this posting</span>
            </span>
            <span class="unbanish">
                <span class="icon icon-trash red" role="button"/> restore this posting</span>
        </span>
    </span>
</p>

我的想法是我可以遍历所有&lt; p>标签并在我需要的每个标签中获取标签,但它并没有很好地运作。这就是我想得到的:

enter image description here

然后转到下一个&lt; p>得到同样的东西。我觉得自己越来越近了,但我错过了至关重要的事情。例如,这段代码为我提供了&#34; data-pid&#34;来自每个

,但&#34; titletextonly&#34;一遍又一遍。

enter image description here enter image description here

感谢您提供的任何帮助!!

1 个答案:

答案 0 :(得分:1)

每当XPath以/开头时,它将始终被视为绝对XPath(换句话说,相对于根文档)忽略当前上下文元素,在这种情况下由变量{{1}引用}。也就是说,title将始终返回与XPath参数匹配的整个文档中的第一个元素,而不管上下文元素。

要使XPath相对于context元素,您需要在开头添加SelectSingleNode()

.