我正在从html文档中提取文本并存储在数据库中.我正在使用webharvest工具来提取内容.但是我有点卡在某一点上.在webharvest内部,我使用XQuery表达式来提取数据.我正在解析的html文档如下:
<td><a name="hw">HELLOWORLD</a>Hello world</td>
Run Code Online (Sandbox Code Playgroud)
我需要从上面的html脚本中提取"Hello world"文本.
我试过以这种方式提取文本:
$hw :=data($item//a[@name='hw']/text())
Run Code Online (Sandbox Code Playgroud)
然而,我总是得到的是"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>
Run Code Online (Sandbox Code Playgroud)
我想提取hwe2和hw3之间的文本Hello world 2.我不想使用text()[3],但有一些方法可以在/ [[name ='hw2']和/ [[name ='hw3']之间提取文本.
您的xpath正在选择a节点的文本,而不是节点的文本td:
$item//a[@name='hw']/text()
Run Code Online (Sandbox Code Playgroud)
把它改成这个:
$item[a/@name='hw']/text()
Run Code Online (Sandbox Code Playgroud)
更新(以下评论和更新问题):
此xpath选择$item具有a包含name属性设置为的标记的第二个文本节点hw:
$item[a/@name='hw']//text()[2]
Run Code Online (Sandbox Code Playgroud)