我正在从html文档中提取文本并存储在数据库中。我正在使用webharvest工具来提取内容。但是我有点卡在某一点上。在webharvest内部,我使用XQuery表达式来提取数据。我正在解析的html文档如下:
<td><a name="hw">HELLOWORLD</a>Hello world</td>
我需要从上面的html脚本中提取“Hello world”文本。
我尝试以这种方式提取文本:
$hw :=data($item//a[@name='hw']/text())
然而,我总是得到的是“HELLOWORLD”,而不是“Hello world”。
有没有办法提取“Hello World”。请帮忙。
如果我想这样做怎么办:
<td>
<a name="hw1">HELLOWORLD1</a>Hello world1
<a name="hw2">HELLOWORLD2</a>Hello world2
<a name="hw3">HELLOWORLD3</a>Hello world3
</td>
我想提取hwe2和hw3之间的文本Hello world 2。我不想使用text()[3]但有一些方法可以在/ [[name ='hw2']和/ [[name ='hw3']之间提取文本。
答案 0 :(得分:1)
首先,您正在寻找名称属性以“hw”开头的节点。这可以通过以下途径实现:
$item//a[starts-with(@name,'hw')]
找到节点后,您想要检索一个节点后面的第一个文本节点。这可以这样做:
$item//a[starts-with(@name,'hw')]/following-sibling::text()[1]