xpath获取下一页,兄弟结点的妙用

第一页的情况:

第四页的情况 :

文章的链接:  http://tech.huanqiu.com/science/2018-02/11605853_4.html

从上面我们可以看到,如果仅仅用xpath获取下一页的链接 例如:  //div[@id="pages"]/a[@class="a1"][text()="下一页"]/@href

就会在第四页的时候重复获取相同的链接,我们通过观察可以发现一些规律:

所在的页码是在与链接a标签同级的span标签里面,这个时候我们可以采用兄弟结点,来解决这个问题,

//div[@id="pages"]/span/following-sibling::a[text()!="下一页"]/@href

说明:

1  获取到span标签的下一个兄弟结点a标签  (following-sibling::a)

2  另它的text内容不为"下一页"  ([text()!="下一页"])

3  再取这个a标签的href属性  (@href)

这样在第四页的时候获取到的链接为Null , 就不会重复获取下一页的链接了

原文地址:https://www.cnblogs.com/haitianzhimen/p/8671806.html

时间: 2024-10-03 18:07:14

xpath获取下一页,兄弟结点的妙用的相关文章

从当前页获取下一页的URL

有一个很简单的现实情况:我在百度贴吧发了一篇帖子,长达10页,我想写一个爬虫从第一页爬取到第10页,然而条件是我只知道第一页的URL,而且每一页都有下一页的URL,所有的URL都没有规律可循.曾经写爬虫获取URL都是靠规律,靠发现规律,不可否认很多网站当前页的URL和下一页的URL只是阿拉伯数字上的略微区别,经过稍加分析就可以知道全网的URL,这种方法很简单,但是不可靠,如果日后想要爬去的网站URL没有规律可循,岂不是要干瞪眼了.一般网页都有下一页的链接,然后下一页有下一页的链接,像这种通过当前

Android ListView上拉获取下一页

关于ListView上拉刷新的需求很多,实现方式也多种多样. 一般是简单的通过一个page变量来控制当前请求的页数,然后上拉的时候就发送请求. 实现出来后,经过测试哥的折腾,发现有诸多细节没有处理好,比如会出现重复数据,反复的上拉导致多次请求等bug. 后来就决定单独写一个工具类,方便以后需要直接使用. 1 public class ListViewScrollHelper<T> { 2 private static final String TAG = "ListViewScrol

织梦栏目列表页分页条获取上一页下一页链接

标签说明 支持动态/静态/伪静态 支持电脑站/手机站 不改动程序文件 上一页 <a href="{dede:pagelist listitem=pre runphp=yes}preg_match_all('/href=['"]([^(}>)]+)['"]/', @me, $reselt);@me = $reselt[1][0];{/dede:pagelist}">上一页</a> 下一页 <a href="{dede:pa

Appium根据xpath获取控件实例随笔

如文章<Appium基于安卓的各种FindElement的控件定位方法实践>所述,Appium拥有众多获取控件的方法.其中一种就是根据控件所在页面的XPATH来定位控件. 本文就是尝试通过自己的试验来尝试对Appium如何用xpath来定位控件做一个阐述,当中如有不对的地方敬请大家指出. 1. 背景 本文尝试使用的试验对象是SDK自带的NotePad应用实例,假设已经有两个Notes分别是"note1"和"note2"添加到Notepad上面,我们要做的

Appium根据xpath获取控件

如文章< Appium基于安卓的各种FindElement的控件定位方法实践>所述,Appium拥有众多获取控件的方法.其中一种就是根据控件所在页面的XPATH来定位控件. 本文就是尝试通过自己的试验来尝试对Appium如何用xpath来定位控件做一个阐述,当中如有不对的地方敬请大家指出. 1. 背景 本文尝试使用的试验对象是SDK自带的NotePad应用实例,假设已经有两个Notes分别是“note1”和“note2”添加到Notepad上面,我们要做的就是尝试用xpath的方法来定位“no

【转】Appium根据xpath获取控件实例随笔

原文地址:http://blog.csdn.net/zhubaitian/article/details/39754233 如文章<Appium基于安卓的各种FindElement的控件定位方法实践>所述,Appium拥有众多获取控件的方法.其中一种就是根据控件所在页面的XPATH来定位控件. 本文就是尝试通过自己的试验来尝试对Appium如何用xpath来定位控件做一个阐述,当中如有不对的地方敬请大家指出. 1. 背景 本文尝试使用的试验对象是SDK自带的NotePad应用实例,假设已经有两

jsp实现上一页下一页翻页功能

前段时间一直忙于期末考试和找实习,好久没写博客了. 这段时间做了个小项目,包含了翻页和富文本编辑器Ueditor的两个知识点,Ueditor玩的还不是很深,打算玩深后再写篇博客. 要实现翻页功能,只需要设置一个pageIndex即可,然后每次加载页面时通过pageIndex去加载数据就行. 那么我们可以设置一个隐藏的input框,用于传递pageIndex给下个页面. 当我们点击上一页的时候,通过js方法改变pageIndex的值,再提交表单即可 二话不多说,看代码,代码里面写的还算比较清楚.

viewpager处理(三):让viewpager不预加载下一页

有时候viewpager加载页面的时候,我们发现页面的数据量很大,预加载的话会消耗性能,为了节省用户流量和手机性能,所以我们想让viewpager不自动预加载下一页,怎么实现呢? viewpager预加载是这样产生的:在PagerAdapter里的instantiateItem方法中,如果有加载数据的逻辑,则viewpager就会预加载.所以加载数据的逻辑不能放在PagerAdapter里的instantiateItem方法中.我们可以将加载数据逻辑放到页面切换监听中. 1.加载数据不放在Pag

Web 上一页下一页 用超链接 用按钮

          方法一超链接 Default.aspx.cs html代码************************************************************************************* <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default&