账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    XPath 该怎样分组解析这种平铺式 table 内容?
    • 2020-01-01 00:00
    • 11
    26
    0

    手头上有个功能是使用 XPath 解析小说网站, 并做成通用逻辑, 只要提供指定的 XPath 就可以解析大部分网站.

    目前的基本逻辑是, 提供卷名的 XPath, 卷内容块 XPath, 章节是在卷内容块的基础上使用名字 XPath 和链接 XPath 解析, 这样就可以得到两个数组, 第一个是卷名数组, 第二个是二维数组, 每卷章节为一个数组, 刚好可以让一个卷名对应一个章节数组.

    注: 每个 XPath 都可以再添加一个正则表达式来增强解析.

    一般小说阅读站的目录都是每一卷一个 div 或 table, 多个章节塞进去填充, 但遇到一个网站章节目录不按套路来, HTML 结构第一次见, 如下:

    <table class="css" border="0" align="center" cellpadding="3" cellspacing="1">
      
      
      <tr>
        <td class="vcss" colspan="4">第一卷</td>
      </tr>
      
      
      
      <tr>
        <td class="ccss"><a href="74267.htm">序章</a></td>
        <td class="ccss"><a href="74268.htm">第一章 异世界召唤与平凡天职</a></td>
        <td class="ccss"><a href="74269.htm">第二章 深渊底层的怪物</a></td>
        <td class="ccss"><a href="74270.htm">第三章 黄金吸血姬</a></td>
      </tr>
      
      
      
      <tr>
        <td class="ccss"><a href="74271.htm">第四章 最深处的守护者</a></td>
        <td class="ccss"><a href="74272.htm">最终章 启程</a></td>
        <td class="ccss"><a href="74273.htm">序章性质的终章</a></td>
        <td class="ccss"><a href="74274.htm">番外篇 胜算百分之零的战役</a></td>
      </tr>
      
      
      
      <tr>
        <td class="ccss"><a href="74275.htm">后记</a></td>
        <td class="ccss"><a href="74276.htm">特典小册子 降临在圣地的战姬</a></td>
        <td class="ccss"><a href="74277.htm">追求浪漫</a></td>
        <td class="ccss"><a href="74298.htm">插图</a></td>
      </tr>
      
      <tr>
        <td class="vcss" colspan="4">第二卷</td>
      </tr>
      
      <tr>
        <td class="ccss"><a href="77117.htm">第一章 男孩遇见了……抱歉兔子</a></td>
        <td class="ccss"><a href="77118.htm">第二章 改头换面的兔子们</a></td>
        <td class="ccss"><a href="77119.htm">第三章 莱森大迷宫</a></td>
        <td class="ccss"><a href="77120.htm">第四章 密雷迪·莱森~</a></td>
      </tr>
      
      <tr>
        <td class="ccss"><a href="77121.htm">终章</a></td>
        <td class="ccss"><a href="77122.htm">番外篇 我是怪物,有什么意见吗?</a></td>
        <td class="ccss"><a href="77123.htm">后记</a></td>
        <td class="ccss"><a href="77124.htm">特典小册子 恐怖猫耳</a></td>
      </tr>
      
      <tr>
        <td class="ccss"><a href="77125.htm">万圣节?</a></td>
        <td class="ccss"><a href="77126.htm">插图</a></td>
        <td class="ccss">&nbsp;</td>
        <td class="ccss">&nbsp;</td>
      </tr>
      
    </table>
    

    想问各位大佬, 这种平铺直叙没啥特点的内容该怎样继续用原有逻辑继续解析?

    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 0
    • 魏晋南北朝的 普通会员 1楼

      XPath 用于在 XML 或 HTML 文档中查找和选择元素。如果你有一个包含平铺式 table 的 XML 文档,你可以在 XPath 中使用 "group" 选项来分组元素。

      以下是一个示例 XPath,它将 "table" 标签分组,然后查找所有 "table" 标签内的所有 "tr" 标签:

      xml //table //tr

      在这个例子中,XPath 选择器 "//table" 选择包含 "table" 标签的所有元素。然后,XPath 选择器 "//tr" 选择所有 "tr" 标签内的元素。这样,我们就可以使用这些元素来查找所有包含平铺式 table 的元素。

      注意,这个例子假设 "table" 标签在 XML 文档中始终是第一个元素。如果 "table" 标签位于文档中的其他位置,你需要相应地调整 XPath 选择器。

    更多回答
    扫一扫访问手机版