EasySpider无下一页按钮只有具体页面按钮时的翻页方法(EXEC和EVAL教程)

在一些网页中,翻页操作没有“下一页”按钮,用户只能通过点击具体的页码按钮进行翻页。此时,我们需要编写逻辑来动态调整页码按钮的点击顺序,从而实现自动翻页。本文将以中国地震台网为例,展示如何使用EXEC和EVAL配合实现这种翻页操作。

rpa_tutorial_easyspider_case_Page_turning_1

简单循环点击页码按钮

一种简单的方案是选中页面上的所有页码按钮并循环点击,但这种方式仅适用于固定页数,且可能点击到不相关的按钮(如尾页、首页),因此不是最优解。

rpa_tutorial_easyspider_case_Page_turning_2

EXEC和EVAL配合实现动态翻页

1. 基本思路

为了动态点击页面的页码按钮,我们可以使用EXEC和EVAL配合,实现动态更新页码按钮的XPath。在每次翻页时,程序会根据当前的页码自动调整下一次点击的页码按钮。

步骤概览:

  1. 定义一个变量self.page,初始值为2(因为第一页已经点击,需要从第二页开始)。
  2. 设置翻页操作,并将XPath中的页码部分替换为动态的变量self.page
  3. 每次翻页后,将self.page的值加1,确保下一次点击的页码正确。

2. 实现步骤

2.1定义自定义变量

在任务开始时,通过自定义操作定义一个变量self.page,初始值设为2,表示下一次点击的页码是第2页。代码如下:

    
python
self.page = 2

rpa_tutorial_easyspider_case_Page_turning_3

2.2 设置翻页操作

完成数据提取流程后,EasySpider会提示是否设置翻页操作。此时,我们选中第2页的页码按钮,进入翻页设置。

rpa_tutorial_easyspider_case_Page_turning_4

rpa_tutorial_easyspider_case_Page_turning_5

rpa_tutorial_easyspider_case_Page_turning_6

2.3修改XPath

默认的翻页操作会生成一个包含页码的XPath。我们将其中的li[2]部分替换为li[eval("self.page")],使页码能够根据self.page的值动态变化。

    
javascript
//*[contains(@class, "pagination")]/ul[1]/li[eval("self.page")]/a[1]

rpa_tutorial_easyspider_case_Page_turning_7

4. 动态更新页码

在每次点击翻页按钮后,我们需要更新self.page的值。添加一个自定义操作,类型为EXEC,代码如下:

    
python
self.page += 1

这将确保下一次点击的XPath指向下一页的页码按钮。

rpa_tutorial_easyspider_case_Page_turning_8

3. 页码结构变化时的特殊处理

在某些网站中,不同页码的HTML结构可能会发生变化。例如,在中国地震台网,第一页到第二页的页码结构不同于后续页码。因此,翻页逻辑需要进行特殊处理:

特殊情况处理示例:

    
python
# 对于中国地震台网,当从第一页翻到第二页时,页码结构发生变化。
if self.page == 2: 
    self.page += 3  # 第二页开始,页码3对应的是第5个元素
else:
    self.page += 1  # 从第三页开始,页码只需递增1

根据实际情况,你可以修改逻辑,以适应不同的网站结构。

完整流程

  1. 定义变量:在任务开始时,定义self.page,初始值为2。
  2. 设置翻页操作:通过设置翻页操作,修改XPath为动态值li[eval("self.page")]
  3. 更新页码:每次翻页后,将self.page的值+1,或根据页面结构的变化进行特殊处理。

rpa_tutorial_easyspider_case_Page_turning_9

通过EXEC和EVAL配合使用,我们能够动态调整翻页按钮的XPath,解决了没有“下一页”按钮的翻页问题。这种方法在页面结构复杂、无法使用固定XPath时尤其有效。你可以根据不同网站的需求,灵活调整代码,确保自动化任务的流畅执行。

阅读全文
AI工具教程
免费领取AI学习资料 进AI副业交流群
礼物
AI工具教程
免费领取AI学习资料 进AI副业交流群