javascript - 我应该使用 Xpath 还是 regexp 来实现此目的?

标签 javascript java regex xpath import.io

我不是语言专家,也没有任何语言方面的知识。我正在从半动态的网站提取数据。

例如,我需要有两列“就购房计划提供建议 - 客户类型”和“就购房计划提供建议 - 投资类型”,其中列出客户和投资类型(每种类型可以有多个)它们可以进入一个单元格,但有某种分隔符,例如“;”。

表格如下所示

How the table appears

代码如下:

就购房计划提供建议

                <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/

相关文章:

javascript - 使用 RGBA 值创建 WebGL 纹理

javascript - NodeJS/Javascript 选择一个以 # 开头的对象?

javascript - 屏幕滚动后的 div 容器

java - 数据库中超过一个用户的 Spring Security 身份验证不起作用

java - gradle:如何测试不同版本的依赖项?

javascript - jquery中检测哪个下拉框被点击

java - 创建 Java 对象一般问题

java - 正则表达式将字符串格式化为有效的大十进制值

javascript - 改变我的正则表达式以查看任何非数字字符?

regex - Powershell中的Regex无法检查换行符