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

2023年kenpom.com大学篮球数据爬取问题求助

爬取kenpom.com大学篮球数据的问题

我一直在网上查找如何使用BeautifulSoup和Pandas爬取kenpom.com的大学篮球数据。由于没有该网站的账号,无法使用kenpompy库。我见过一些往年的爬取示例,包括使用pracpred库(声明:我对该库毫无经验)或用curlconverter获取requests.get请求所需的请求头、Cookie和参数,但如今该网站对主数据表的爬取限制更严格了。我目前已写出以下代码:

import requests
from bs4 import BeautifulSoup

url ='https://kenpom.com/index.php?y=2023'

cookies = {
    'PHPSESSID': 'f04463ec42584dbd1bf7a480098947d1',
    '_ga': 'GA1.2.120164513.1673124870',
    '_gid': 'GA1.2.622021765.1673496414',
    '__stripe_mid': '71a4117b-cbef-4d3c-b31b-9d18e5c99a33183485',
    '__stripe_sid': '99b77b80-1222-4f7a-b2a8-acf5cf19c7d18a637f',
    'kenpomtry': 'https%3A%2F%2Fkenpom.com%2Fsummary.php%3Fs%3DRankAPL_Off%26y%3D2021',
    '_gat_gtag_UA_11558853_1': '1',
}

headers = {
    'authority': 'kenpom.com',
    'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
    'accept-language': 'en-US,en;q=0.9',
    # 'cookie': 'PHPSESSID=f04463ec42584dbd1bf7a480098947d1; _ga=GA1.2.120164513.1673124870; _gid=GA1.2.622021765.1673496414; __stripe_mid=71a4117b-cbef-4d3c-b31b-9d18e5c99a33183485; __stripe_sid=99b77b80-1222-4f7a-b2a8-acf5cf19c7d18a637f; kenpomtry=https%3A%2F%2Fkenpom.com%2Fsummary.php%3Fs%3DRankAPL_Off%26y%3D2021; _gat_gtag_UA_11558853_1=1',
    'sec-ch-ua': '"Not?A_Brand";v="8", "Chromium";v="108", "Google Chrome";v="108"',
    'sec-ch-ua-mobile': '?0',
    'sec-ch-ua-platform': '"Windows"',
    'sec-fetch-dest': 'document',
    'sec-fetch-mode': 'navigate',
    'sec-fetch-site': 'none',
    'sec-fetch-user': '?1',
    'upgrade-insecure-requests': '1',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36',
}

params = {
    'y': '2023',
}

response = requests.get('https://kenpom.com/index.php', params=params, cookies=cookies, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')

# table = soup.find('table',{'id':'ratings-table'}).tbody
解决建议
  • Cookie时效性处理:你当前用的Cookie属于临时会话,很快会失效。建议每次爬取前从浏览器开发者工具的Network面板里,复制最新的请求Cookie替换掉代码里的旧值。
  • 应对动态渲染:kenpom可能用JavaScript动态加载表格数据,单纯requests拿的静态HTML可能不含完整数据。可以用selenium或playwright模拟真实浏览器,等页面加载完成后再提取源码。
  • 请求头优化:确保请求头里的sec-ch-ua、sec-ch-ua-platform等参数和你当前浏览器一致,避免被识别为爬虫;可以添加referer字段,模拟站内跳转请求。
  • 表格提取容错:提取表格时先判断是否找到目标元素,不要直接访问.tbody,避免报错,示例代码:
table = soup.find('table', id='ratings-table')
if table:
    tbody = table.tbody
    # 后续遍历行和列处理数据
else:
    print("未找到目标表格,请检查请求是否成功")
  • 控制请求速率:每次请求后加time.sleep(2)之类的延迟,避免频繁请求被封IP。
  • 验证请求状态:先打印response.status_code确认请求是否成功(200为正常),再打印response.text查看返回内容,如果是登录页或验证页,说明需要处理反爬验证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 22:30:31