使用XPath选择以下兄弟的href属性

Kev*_*rge 6 html xpath google-chrome web-scraping

我试图刮掉以下网站:http://www.hudson211.org/zf/profile/service/id/659837

我正在尝试选择"网址"文本旁边的href.以下xpath选择器获取我之后的标记:

$x("//th[contains(text(), 'Web Address')]/following-sibling::td/a")
Run Code Online (Sandbox Code Playgroud)

回报

<a href="http://www.co.sullivan.ny.us">www.co.sullivan.ny.us</a>
Run Code Online (Sandbox Code Playgroud)

但是,当我专门尝试使用@href提取href时,返回值是一个空数组:

$x("//th[contains(text(), 'Web Address')]/following-sibling::td/a/@href")
Run Code Online (Sandbox Code Playgroud)

回报 []

这是我正在查看的行的html:

<tr valign="top">
    <td class="profile_view_left"></td>
    <th align="left" class="profile_view_center">Web Address</th>
    <td class="profile_view_right">
      <ahref="http://www.co.sullivan.ny.us">www.co.sullivan.ny.us</a>                         </td>
    <td></td>
</tr>
Run Code Online (Sandbox Code Playgroud)

har*_*r07 3

我假设您因为该$x()功能而使用 Google Chrome 控制台。您选择@href属性的xpath实际上有效,正如我在 Chrome 中测试的那样,只有结果不会像您选择元素时那样显示在控制台中 - 出于我目前不太确定的原因 - :

>var result = $x("//th[contains(text(), 'Web Address')]/following-sibling::td/a/@href")
undefined
>result[0].value
"http://www.co.sullivan.ny.us"
Run Code Online (Sandbox Code Playgroud)

看到使用完全相同的表达式,变量result包含预期的 url 值。href如果您的目的只是在控制台中显示单个值而不进行进一步处理,则可以这样做:

>$x("//th[contains(text(), 'Web Address')]/following-sibling::td/a/@href")[0].value
"http://www.co.sullivan.ny.us"
Run Code Online (Sandbox Code Playgroud)