【问题标题】:Stop pagination loop with Xpath使用 Xpath 停止分页循环
【发布时间】:2018-09-16 06:35:36
【问题描述】:

我成功地使用下面代码中显示的 xpath 来选择浏览器屏幕上显示的网页之后的网页。

如何修改xpath,使其在页码等于50或50页后停止分页循环?

//a[@class='active_page']/following::a[1]

<div id="pagination">
   <ul class="zPagination">
      <li><a href="http://example.com/page/1">«</a></li>
      <li><a class="active_page" href="http://example.com/page/1">1</a></li>
      <li><a href="http://example.com/page/2">2</a></li>
      <li><a href="http://example.com/page/3">3</a></li>
      <li><a href="http://example.com/page/XX">XX</a></li>
      <li><a href="http://example.com/page/60">»</a></li>
   </ul>
</div>

【问题讨论】:

    标签: html xml xslt xpath web-scraping


    【解决方案1】:

    您可以尝试使用下面的 XPath 来匹配前 50 个页面的链接:

    //a[@class='active_page']/following::a[position()=1 and number(text())<51]
    

    对于 50 岁以后的页面:

    //a[@class='active_page']/following::a[position()=1 and number(text())>50]
    

    【讨论】:

    • 多么史诗般的方法!!!你总是想出新的东西。但是,你能告诉我你为什么使用number(text())吗?对不起我的无知。为此加一个。
    • 因为text()返回的字符串(例如"50")由于类型不同而无法与整数(例如50)进行比较。所以number() 允许将text() 值转换为整数
    • @Andersson 谢谢。尽管建议的代码可以正常工作,但这是所使用程序的问题,循环过程在到达第 50 页后从第 1 页重新开始。
    • @Mkgl ,你能用你使用的代码更新你的问题吗?或者您也可以创建新问题并添加应用我的 XPath 建议的代码
    • @Andersson 没问题,对我来说这个问题得到了回答。我测试的代码是您建议的第一行代码(前 50 页)。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-18
    相关资源
    最近更新 更多