我正在尝试抓取以下网站:http://www.hudson211.org/zf/profile/service/id/659837
我正在尝试选择“网址”文字旁边的href。以下xpath选择器获取我之后的标记:
$x("//th[contains(text(), 'Web Address')]/following-sibling::td/a")
返回
<a href="http://www.co.sullivan.ny.us">www.co.sullivan.ny.us</a>
但是,当我专门尝试使用@href提取href时,返回值为空数组:
$x("//th[contains(text(), 'Web Address')]/following-sibling::td/a/@href")
返回[]
这是我正在查看的行的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>
答案 0 :(得分:3)
我认为您使用的是Google Chrome控制台,因为$x()
功能。选择@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"
看到使用完全相同的表达式,变量result
包含预期的url值。如果您只想在控制台中显示单个href
值而无需进一步处理,则可以执行以下操作:
>$x("//th[contains(text(), 'Web Address')]/following-sibling::td/a/@href")[0].value
"http://www.co.sullivan.ny.us"