You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何不使用Selenium的.click方法,用Python点击网页按钮跳转下页

不用Selenium模拟点击,用POST请求爬取下一页内容

要实现不用.click()方法爬取下一页,核心是模拟按钮点击时触发的POST请求,而非真的“点击”页面元素。具体操作步骤如下:

1. 抓取下一页对应的POST请求详情

打开浏览器开发者工具(按F12),切换到「Network」标签:

  • 手动点击页面上的“下一页”按钮
  • 在Network列表里筛选POST类型请求(可通过「XHR/Fetch」缩小范围)
  • 记录以下关键信息:
    • 请求的目标URL(Request URL)
    • 请求头(Request Headers)里的User-Agent、Cookie、Referer、X-CSRFToken(如果存在)等字段
    • 请求携带的表单数据(Form Data)或JSON payload,比如page=2、offset=10这类分页参数,以及可能的加密验证参数

2. 用Python的requests库发送POST请求

示例代码(以表单数据POST场景为例):

import requests
from bs4 import BeautifulSoup

# 初始化会话,自动维持Cookie状态
session = requests.Session()

# 替换为你抓取到的请求头内容
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36",
    "Referer": "https://目标网站的当前页URL",
    "Cookie": "抓取到的Cookie字符串"
}

# 替换为你抓取到的POST参数
post_data = {
    "page": "2",
    "limit": "10",
    # 其他必要参数,比如csrf_token、total_count等
}

# 发送POST请求
response = session.post("抓取到的POST请求URL", headers=headers, data=post_data)

# 解析响应内容(假设返回HTML格式)
soup = BeautifulSoup(response.text, "html.parser")
# 提取目标数据
target_items = soup.select(".你需要的元素选择器")
for item in target_items:
    print(item.get_text().strip())

3. 关键注意事项

  • 动态参数处理:如果POST数据里有加密参数(比如csrf_token、signature),要先从当前页面的HTML中提取(比如从<meta>标签或隐藏输入框获取),不能直接硬编码。
  • 会话保持:必须使用requests.Session()发送请求,它会自动保存和携带Cookie,维持与网站的会话状态,避免被判定为未登录或异常请求。
  • 反爬应对:若请求被拦截,检查请求头是否完整,可补充Accept、Accept-Language等字段;遇到IP封禁时可搭配代理IP;请求之间添加适当延时(如time.sleep(1)),模拟真实用户操作节奏。

内容的提问来源于stack exchange,提问作者Adnos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 19:45:42