Я работаю над извлечением текста из документов HTML и хранения в базе данных. Я использую webharvest инструмент для извлечения содержания. Однако я отчасти упорно продолжил точку. Внутри webharvest я использую выражение XQuery inorder для извлечения данных. Документ HTML, который я анализирую, следующие:
<td><a name="hw">HELLOWORLD</a>Hello world</td>
Я должен извлечь "Привет мировой" текст из вышеупомянутого сценария HTML.
Я попытался извлечь текст этим способом:
$hw :=data($item//a[@name='hw']/text())
Однако то, что я всегда получаю, является "HELLOWORLD" вместо "Привет мира".
Есть ли способ извлечь "Привет Мир". Помогите.
Что, если я хочу сделать это этот путь:
<td>
<a name="hw1">HELLOWORLD1</a>Hello world1
<a name="hw2">HELLOWORLD2</a>Hello world2
<a name="hw3">HELLOWORLD3</a>Hello world3
</td>
Я хотел бы извлечь текст Привет мир 2, который находится в betweeb hw2 и hw3. Я не хотел бы использовать текст () [3], но являюсь там некоторым способом, которым я мог извлечь текст между/a [@name ='hw2'] и/a [@name ='hw3'].
Прежде всего, вы ищете узлы a, атрибуты имен которых начинаются с 'hw'. Этого можно добиться следующим путем:
$item//a[starts-with(@name,'hw')]
После того, как вы нашли узлы a, вам нужно получить первый текстовый узел, который следует за узлом a. Это можно сделать следующим образом:
$item//a[starts-with(@name,'hw')]/following-sibling::text()[1]