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

使用BeautifulSoup爬取Edison学区目录多页数据时翻页失效问题求助

翻页失效的核心原因与解决方案

原因分析

你遇到的翻页参数修改后无响应的情况,本质是目标站点没有采用URL参数直接控制服务端分页的逻辑,通常属于以下三类场景:

  • 站点采用动态加载分页:翻页时通过异步XHR请求拉取数据,需要携带特定请求参数/请求头才能返回对应页内容
  • 站点为前端分页:所有目录数据已经在首次加载时全量返回,翻页只是前端做的内容切割,不需要请求新的URL
  • 站点有反爬校验:未携带合法Cookie、Referer等身份标识的请求会默认返回第一页内容

具体解决步骤

  1. 抓包确认真实分页请求
    打开浏览器F12开发者工具,切换到「网络」面板,手动点击页面的下一页按钮,筛选Fetch/XHR类型的请求:
  • 如果出现新的异步请求:查看该请求的请求方法、请求头、URL参数/请求体参数,提取分页相关的字段(比如page、offset、pageNumber等),后续直接模拟该请求即可拿到对应页数据
  • 如果没有新的异步请求:说明是前端分页,直接从首次请求返回的HTML或者内嵌的JS变量中提取全量数据即可,不需要循环请求多页
  1. 适配模拟浏览器方案(可选)
    如果抓包分析门槛较高,可以直接用Playwright、Selenium这类模拟浏览器工具,直接模拟用户点击下一页按钮,等待页面渲染完成后提取当前页的HTML内容,再调用你已有的extract_data方法解析数据即可,不需要修改原有的数据提取逻辑。

现有代码优化

你当前代码中pandas的append方法已在2.0+版本废弃,建议调整为更高效的批量合并逻辑:

import pandas as pd

page = 1
df_list = []
while(page < 240):
    # 此处替换为抓包后得到的真实分页请求逻辑
    url = f'https://www.edison.k12.nj.us/directory?const_page={page}&'
    bs = create_beautiful(url)
    df2 = extract_data(bs)
    df_list.append(df2)
    page += 1

# 一次性合并所有分页数据
df = pd.concat(df_list, ignore_index=True)
to_csv_and_excel(df, 'edison_township_public')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 19:48:03