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

如何利用站点自带下拉菜单设置单页结果数,提升Python爬虫爬取效率

解决方案

问题原因

你遇到的配置不随URL生效的问题,和站点的会话存储机制有关:站点会将每页展示条数的配置存储在当前会话的Cookie/服务端会话状态中,和你的请求会话绑定,因此更换浏览器、新开会话都会恢复默认配置。前端下拉选择修改页大小时,会异步提交请求到/Pager/SetPageSize接口更新配置,不会修改当前页面URL。

实现步骤

你可以通过requests.Session维持会话状态,先主动调用页大小设置接口,再请求列表页即可拿到单页200条的结果,具体步骤如下:

  1. 初始化会话对象,复用请求头和Cookie,避免每次请求新建会话导致配置失效
import requests

myheaders = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.76 Safari/537.36',
    "Upgrade-Insecure-Requests": "1",
    "DNT": "1",
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
    "Accept-Language": "en-US,en;q=0.5",
    "Accept-Encoding": "gzip, deflate",
    # 可选:如果接口要求异步请求标识,添加下面的头
    # "X-Requested-With": "XMLHttpRequest"
}

# 初始化会话,统一设置请求头
session = requests.Session()
session.headers.update(myheaders)
  1. 调用页大小设置接口更新配置,你可以先通过浏览器F12网络面板,手动选择200条/页时查看该接口的请求方法、参数名:
    • 通常该接口为POST请求,参数名多为pageSize或itemsPerPage,值为200
    • 把代码里的站点根域名替换为你爬取的站点实际域名即可
set_size_url = "站点根域名/Pager/SetPageSize"
# 按实际接口要求调整参数名、提交方式
payload = {"pageSize": 200}
# 表单提交用data参数,JSON提交用json参数
resp = session.post(set_size_url, data=payload)
# 可校验状态码判断是否设置成功,200/204通常代表成功
if resp.status_code in (200, 204):
    print("页大小设置成功")
  1. 后续所有列表页请求都使用同一个session实例发起,返回的就是单页200条的内容:
page = session.get(你的列表页URL)

注意事项

  • 全程使用同一个Session实例发起请求,不要混用requests.get(),否则会话不共享,配置会失效
  • 若设置后仍返回10条结果,可以核对F12抓包看到的接口请求方式、参数名、参数值是否和代码一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 12:24:01