Xpath 使用drupal中的提要导入器从HTML页面导入数据
我正在尝试使用feeds导入器从HTML页面导入一些数据。背景是:Xpath 使用drupal中的提要导入器从HTML页面导入数据,xpath,drupal-7,Xpath,Drupal 7,我正在尝试使用feeds导入器从HTML页面导入一些数据。背景是: <table class="tabela"> <tr valign="TOP"> <td class="formulario-legenda">Nome:</td> <td nowrap="nowrap"> <b>Raul Fernando de Almeida Moreira Vidal<
<table class="tabela">
<tr valign="TOP">
<td class="formulario-legenda">Nome:</td>
<td nowrap="nowrap">
<b>Raul Fernando de Almeida Moreira Vidal</b>
</td>
</tr>
<tr valign="TOP">
<td class="formulario-legenda">Sigla:</td>
<td>
<b>RMV</b>
</td>
</tr>
<tr valign="TOP">
<td class="formulario-legenda">Código:</td>
<td>206415</td>
</tr>
<tr valign="TOP">
<td class="formulario-legenda">Estado:</td>
<td>Ativo</td>
</tr>
</table>
<table>
<tr>
<td class="topo">
<table>
<tr>
<td class="formulario-legenda">Categoria:</td>
<td>Professor Associado</td>
</tr>
<tr>
<td class="formulario-legenda">Carreira:</td>
<td>Pessoal Docente de Universidades</td>
</tr>
<tr>
<td class="formulario-legenda">Grupo profissional:</td>
<td>Docente</td>
</tr>
<tr valign="TOP">
<td class="formulario-legenda">Departamento:</td>
<td>
<a href="uni_geral.unidade_view?pv_unidade=151"
title="Departamento de Engenharia Informática">Departamento de Engenharia Informática</a>
</td>
</tr>
</table>
</td>
</tr>
</table>
但什么也没有出现。有人能帮我用正确的语法来获取Grupo Profissional吗?快速回答可能有用
仅考虑您提供的HTML示例,它只有两个表,您可以根据表的位置使用此表达式选择所需的文本:
//table[2]//tr[3]/td[1]/text()
这将在上面粘贴的HTML中起作用。但在实际场景中可能不起作用,因为您可能有其他表,要选择的表没有ID,并且您没有在代码中建议一些可以用于锚定表达式上下文的不变文本。假设XPath表达式的初始部分div序列正确,则可以使用:
/html/body/div/div/div/div/div/div/div/table[2]//tr[3]/td[1]/text()
但这是一个脆弱的表达,容易受到文档中任何更改的影响
可能更好的解决方案
一个更好的选择是寻找一些您可以使用的标识符。我只能猜测,因为我不知道你的密码。在您的示例代码中,我猜Codigo及其后面的数字206415可能是某种标识符。如果是,您可以使用它来锚定您的上下文。首先选择它:
//table[.//td[text()='Código:']/following-sibling::td='206415']
上面的表达式将选择一个表,该表包含一个带有确切文本Código:的td,后跟一个包含确切文本206415的td。考虑到数字是唯一标识符,这将创建一个唯一的上下文。从该上下文中,您现在可以选择所需的文本,该文本位于sibling::table[1]后面的下一个表中。这是第二个表的上下文:
//table[.//td[text()='Código:']/following-sibling::td='206415']/following-sibling::table[1]
这应该选择您想要的文本Grupo profissional:在该表的第三行tr[3]和第一个单元格/列td[1]中:
//table[.//td[text()='Código:']/following-sibling::td='206415']/following-sibling::table[1]//tr[3]/td[1]/text()
//table[.//td[text()='Código:']/following-sibling::td='206415']/following-sibling::table[1]//tr[3]/td[1]/text()