在这个网站怎么使用selenium进行换页操作从而爬去所有的大学名字 这个页面下一页不是a标签里而是 <li title="下一页" class=" ant-pagination-next" tabindex="0"><a class="ant-pagination-item-link"><i aria-label="图标: right" class="anticon anticon-right"><svg viewBox="64 64 896 896" data-icon="right" width="1em" height="1em" fill="currentColor" aria-hidden="true" focusable="false" class=""><path d="M765.7 486.8L314.9 134.7A7.97 7.97 0 0 0 302 141v77.3c0 4.9 2.3 9.6 6.1 12.6l360 281.1-360 281.1c-3.9 3-6.1 7.7-6.1 12.6V883c0 6.7 7.7 10.4 12.9 6.3l450.8-352.1a31.96 31.96 0 0 0 0-50.4z"></path></svg></i></a></li> 这个样子怎么办
时间: 2025-06-19 08:52:33 浏览: 20
### 使用 Selenium 模拟点击自定义分页元素进行多页数据爬取
在使用 Selenium 进行网页数据抓取时,如果遇到非标准的分页结构(例如 `ant-pagination-next`),可以通过定位该分页元素并模拟点击操作来实现逐页抓取。以下是一个完整的实现方法,包括如何定位分页按钮、处理动态加载内容以及将数据保存到 CSV 文件。
#### 1. 初始化 Selenium 驱动程序
首先需要初始化 WebDriver,并设置等待时间以确保页面元素能够完全加载。
```python
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import csv
import time
# 初始化 WebDriver(以 Chrome 为例)
driver = webdriver.Chrome()
# 设置隐式等待时间
driver.implicitly_wait(10)
```
#### 2. 定义分页抓取逻辑
通过循环模拟点击分页按钮,直到无法找到下一页按钮为止。
```python
def scrape_pagination(base_url, output_file):
page = 1
driver.get(base_url)
while True:
print(f"正在抓取第 {page} 页")
# 等待表格加载完成
wait = WebDriverWait(driver, 10)
wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "tr.js-row")))
# 获取当前页面的数据
html = driver.page_source
table_data = parse_table(html) # 自定义解析函数
if not table_data: # 如果没有数据,退出循环
print("没有更多数据,结束爬取!")
break
# 将数据保存到 CSV 文件
with open(output_file, mode='a', newline='', encoding='utf-8') as file:
writer = csv.writer(file)
writer.writerows(table_data)
print(f"第 {page} 页已保存 {len(table_data)} 条数据")
# 尝试点击下一页按钮
try:
next_button = driver.find_element(By.CLASS_NAME, "ant-pagination-next")
if "ant-pagination-disabled" in next_button.get_attribute("class"): # 检查是否为禁用状态
print("没有更多页面,结束爬取!")
break
next_button.click()
time.sleep(2) # 等待页面加载
page += 1
except Exception as e:
print(f"发生错误:{e}")
break
```
#### 3. 解析 HTML 数据
需要编写一个自定义函数来解析每页的 HTML 数据,并提取所需信息。
```python
def parse_table(html):
from bs4 import BeautifulSoup
soup = BeautifulSoup(html, 'html.parser')
rows = []
for tr in soup.select("tr.js-row"):
row_data = [td.text.strip() for td in tr.select("td")]
if row_data:
rows.append(row_data)
return rows
```
#### 4. 执行抓取任务
调用上述函数开始抓取数据。
```python
base_url = "https://example.com/data" # 替换为目标网站 URL
output_file = "data.csv"
scrape_pagination(base_url, output_file)
# 关闭浏览器
driver.quit()
```
### 注意事项
- 在实际应用中,需根据目标网站的具体分页结构调整 CSS 选择器[^1]。
- 如果分页按钮是通过 JavaScript 动态生成的,可能需要增加显式等待时间以确保元素加载完成[^2]。
- 为了避免被目标网站识别为爬虫,可以设置 User-Agent 或者使用无头模式运行浏览器。
阅读全文
相关推荐

















