我不是语言专家,也没有任何语言方面的知识。我正在从半动态的网站提取数据。
例如,我需要有两列“就购房计划提供建议 - 客户类型”和“就购房计划提供建议 - 投资类型”,其中列出客户和投资类型(每种类型可以有多个)它们可以进入一个单元格,但有某种分隔符,例如“;”。
表格如下所示
代码如下:
就购房计划提供建议
<div id="a2Nb000000035ohEAA" class="collapse DisciplineDetails PassportDetails PermDesc">
<h3 class="PermissionsListHeader">Advising on a home purchase plan</h3>
<br>
<br>
</div>
<ul class="PermissionConditionsList">
<li class="PermissionsConditionsItem">
Customer Type
<ul class="PermCondsLimitationsList">
<li style="list-style: none"><span id="j_id0:j_id1:j_id110:regActTable:0:j_id531:0:j_id533:0:j_id535:0:j_id538"></span></li>
<li class="PermCondsLimitationsItem Popover">Customer</li>
</ul>
</li>
</ul>
<ul class="PermissionConditionsList">
<li class="PermissionsConditionsItem">
Investment Type
<ul class="PermCondsLimitationsList">
<li style="list-style: none"><span id="j_id0:j_id1:j_id110:regActTable:0:j_id531:1:j_id533:0:j_id535:0:j_id538"></span></li>
<li class="PermCondsLimitationsItem Popover">Home purchase plans</li>
</ul>
</li>
</ul>
</div>
最佳答案
如果没有其他列表具有这些类但不应考虑在内,则此 xpath 有效。
//ul[@class='PermCondsLimitationsList']/li[@class='PermCondsLimitationsItem Popover']/(text()|span/text()))[normalize-space(.)]
已测试here
要获取标题:
//ul[@class='PermissionConditionsList']/li[@class='PermissionsConditionsItem']/text()[normalize-space(.)]
综合:
//ul[@class='PermissionConditionsList']/li[@class='PermissionsConditionsItem']/(text()|ul[@class='PermCondsLimitationsList']/li[@class='PermCondsLimitationsItem Popover']/(text()|span/text()))[normalize-space(.)]
但是要以某种格式获取两者,XSLT 可能会更有用。
关于javascript - 我应该使用 Xpath 还是 regexp 来实现此目的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38892444/