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

表单搜索触发的隐藏API接口爬取数据缺失问题求助

网页爬取问题:API返回不完整数据的解决方案与疑问

问题背景

目标网站是一个内嵌表单的HTML页面,点击Search按钮后会加载学校列表,列表中的学校名称为可点击链接。通过开发者工具定位到了加载列表的API请求地址,但直接访问该地址返回的JSON数据仅包含少量基础字段,缺少所需的详细信息(如学校地址、联系方式、校长信息等)。尝试为请求添加模拟浏览器的请求头(包括Referer、X-Requested-With等)后,返回的数据仍无变化,关键字段均为null。

已尝试的代码

带自定义请求头的API请求代码

import requests

def data_fetch(request_url, url_main):
    headers = {
        "Accept": '*/*',
        "Host": 'schoolinfo.leicester.gov.uk',
        "User-Agent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36',
        "Referer": url_main,
        "X-Requested-With": "XMLHttpRequest"
    }
    soup = requests.get(request_url, headers=headers).json()
    print(soup)

def main():
    request_url = "https://schoolinfo.leicester.gov.uk/api/schoolsearch/?schoolPhase=&schoolName=&pn=0&pa=900&schoolType="
    url_main = "https://schoolinfo.leicester.gov.uk/DirectorySearch.html"
    data_fetch(request_url, url_main)

if __name__ == "__main__":
    main()

直接获取接口返回内容的代码

from bs4 import BeautifulSoup
import requests

def url_parser(url):
    html_doc = requests.get(url).text
    soup = BeautifulSoup(html_doc, 'lxml')
    return soup

url = "https://schoolinfo.leicester.gov.uk/api/schoolsearch/?schoolPhase=&schoolName=&pn=0&pa=900&schoolType="
print(url_parser(url))

当前输出结果

两段代码返回的内容完全一致,仅包含学校名称、BaseID、学校类型等少量有效字段,大部分关键信息字段均为null,示例片段如下:

[{"SchoolName":"Abbey Mead Primary Academy","BaseID":1,"SchoolType":"Academy","DfeNumber":null,"Ward":null,"RoleDesc":null,"Head":null,"Address":null,"Postcode":null,"BaseURL":null,"SchoolInspectionsURL":null,"SchoolReportsURL":null,"SchoolVacanciesURL":null,"Telephone":null,"Fax":null,"Email":null,"Sponsor":null,"UPRN":null,"SchoolPhase":"Primary","MapUrl":null,"AgeRange":null,"OverSubscribed":null,"ArrangementURL":null,"PAN":null},...]

后续尝试与问题

尝试通过BaseID拼接学校详情页的链接,随机测试发现页面显示学校总数为87,但BaseID存在不连续的情况(部分ID为13000+、100+等),无法通过简单的连续数值循环遍历获取所有学校的详情信息。

核心疑问

  1. 这种API仅返回基础数据,需要通过后续请求详情页获取完整信息的情况属于什么类型的问题?有没有对应的专业术语?
  2. 是否存在无需逐个爬取详情页,直接获取完整表格数据的方法?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 01:01:07