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

使用curl在Mac终端爬取需登录网页时爬错页面的问题

解决curl带Cookie爬取kenpom特定年份页面跳转的问题

我猜你遇到的第一个坑就是URL里的&符号被终端shell解析成后台命令分隔符了!在bash/zsh这类终端环境里,&会让前面的命令后台运行,所以你实际执行的curl只请求了https://kenpom.com/team.php?team=Duke,后面的y=2002被当成了一个无效的后台命令,这就导致网站跳转到默认的球队页面,而非2002年的版本。

先试试这个最直接的修复:

  • 给整个URL加上单引号(或者双引号),让shell把URL当成一个完整的字符串处理:
    curl -b /Users/dwm8/Desktop/cookies.txt -o /Users/dwm8/Desktop/file.txt 'https://kenpom.com/team.php?team=Duke&y=2002'
    
    单引号是最稳妥的,因为它不会解析任何变量或特殊符号,避免意外问题。

如果加了引号还是不行,那得排查其他可能:

  • 检查Cookie文件的有效性和格式:kenpom需要登录后的会话Cookie(比如PHPSESSID)才能访问历史数据。你可以用浏览器开发者工具(Network标签),登录后刷新目标页面,复制请求头里的完整Cookie内容,然后按照curl要求的格式写入cookies.txt:每行格式是域名\t是否允许子域名\t路径\t是否安全\t过期时间\tCookie名\tCookie值,格式不对的话curl会忽略部分Cookie。
  • 模拟浏览器请求头:有些网站会通过User-Agent识别爬虫,你可以加上浏览器的UA字符串伪装成正常请求:
    curl -A "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36" -b /Users/dwm8/Desktop/cookies.txt -o /Users/dwm8/Desktop/file.txt 'https://kenpom.com/team.php?team=Duke&y=2002'
    
  • 查看详细请求日志定位问题:用-v参数让curl输出完整的请求和响应过程,这样你能看到是否有重定向、Cookie是否正确发送、网站返回的状态码等信息,方便进一步排查:
    curl -v -b /Users/dwm8/Desktop/cookies.txt 'https://kenpom.com/team.php?team=Duke&y=2002'
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 09:12:51