栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Selenium基础知识 分页处理

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Selenium基础知识 分页处理

有时需要对列表进行翻页操作,Selenium同样提供了相应API。
分页处理逻辑大致可分为以下三个步骤:
(1)获取总页数。
(2)获取所有分页并循环翻页。
(3)针对每一次分页进行后续逻辑处理。

以百度贴吧Python为例:

1.先定位到分页div
2.定位到尾页按钮

# -*- coding: utf-8 -*-
from selenium import webdriver
import time
from selenium.webdriver.common.by import By

driver = webdriver.Edge()
data = {
    'index_url':'http://tieba.baidu.com/f?ie=utf-8&kw=python',
    'pagination_id':'frs_list_pager',
    '':''
}

# 访问Python吧首页

# frs_list_pager
driver.get(data['index_url'])
# 定位等到分页div
pagination_div = driver.find_element(by=By.ID,value=data['pagination_id'])
print(pagination_div)

# 计算最后一页的页码
# 先点击尾页按钮
driver.find_element(by=By.CSS_SELECtOR,value='#frs_list_pager > a.last.pagination-item').click()
time.sleep(3)

# 获取尾页的页码数
last_page_no = driver.find_element(by=By.CSS_SELECTOR,value='#frs_list_pager > span').text
time.sleep(2)
print(last_page_no)

# 跳回首页
driver.get(data['index_url'])

# 循环last_page_no次获取每一页的数据
for index in last_page_no:
    # 一些收集数据的代码,省略
    time.sleep(2)
    driver.find_element(by=By.CSS_SELECTOR,value='#frs_list_pager > a.next.pagination-item').click()
# driver.quit()

试运行了几次发现每次一到第五页就停止 然后在循环里加了个输出语句 发现每次的index 分别是 1 3 9 3

发现刚好和总页数一样 就又加了个type语句输出last_page_no变量 发现是string类型 所以只有四次循环 print(type(last_page_no))

最终代码
# -*- coding: utf-8 -*-
from selenium import webdriver
import time
from selenium.webdriver.common.by import By

driver = webdriver.Edge()
data = {
    'index_url':'http://tieba.baidu.com/f?ie=utf-8&kw=python',
    'pagination_id':'frs_list_pager'
}

# 访问Python吧首页

# frs_list_pager
driver.get(data['index_url'])
# 定位等到分页div
pagination_div = driver.find_element(by=By.ID,value=data['pagination_id'])
print(pagination_div)

# 计算最后一页的页码
# 先点击尾页按钮
driver.find_element(by=By.CSS_SELECTOR,value='#frs_list_pager > a.last.pagination-item').click()
time.sleep(2)

# 获取尾页的页码数
last_page_no = driver.find_element(by=By.CSS_SELECTOR,value='#frs_list_pager > span').text
# 现在得到的last_page_no是string类型 需要转换 否则只会有四次循环 1 3 9 3 因为lastpageno是字符串‘1393’
time.sleep(2)
print(type(last_page_no))
last_page_no = int(last_page_no)
print(type(last_page_no))
print(last_page_no)
# 跳回首页
driver.get(data['index_url'])

# 循环last_page_no次获取每一页的数据
for index in range(last_page_no):
    # 一些收集数据的代码,省略
    print(index)
    time.sleep(2)
    driver.find_element(by=By.CSS_SELECTOR,value='#frs_list_pager > a.next.pagination-item').click()

# driver.quit()

像这样就可以啦!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1018899.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号