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

使用Simple PHP Dom查找含指定球队名的父容器并获取赛事数据

用Simple PHP Dom抓取Yallourn/Yallourn North的赛事对阵数据

嘿,我之前折腾过类似的体育赛事数据抓取,给你捋个能直接上手的方案,应该能解决你的问题:

首先,得确保Simple PHP Dom库已经正确引入——要是还没弄,直接把官网的simple_html_dom.php下载到项目目录里就行。接下来分几步来:

1. 先把目标页面内容拉下来

这里要注意两个坑:一是有些网站会限制file_get_contents的请求,所以可以用curl兜底;二是页面编码大概率不是UTF-8,得转码避免乱码。

// 引入Simple PHP Dom库
include 'simple_html_dom.php';

// 目标赛事页面URL
$url = 'http://websites.sportstg.com/comp_info.cgi?client=1-6177-0-434611-0&pool=1&action=ROUND&round=0';

// 优先用file_get_contents,失败就换curl
$htmlContent = file_get_contents($url);
if (!$htmlContent) {
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    // 加个UA头模拟浏览器,避免被拦截
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36');
    $htmlContent = curl_exec($ch);
    curl_close($ch);
}

// 转码(这个页面原始编码是ISO-8859-1,转成UTF-8避免乱码)
$htmlContent = mb_convert_encoding($htmlContent, 'UTF-8', 'ISO-8859-1');

// 初始化Simple PHP Dom对象
$html = str_get_html($htmlContent);

2. 定位赛事行并提取对阵信息

这个页面的赛事数据都在表格里,咱们遍历每一行,找到包含目标球队的行,再把对阵双方和比分抠出来:

// 遍历所有赛事数据行(我查了下页面结构,赛事行的class是"data-row",直接用这个定位)
foreach ($html->find('tr.data-row') as $row) {
    // 检查当前行有没有目标球队的名字
    $rowText = $row->plaintext;
    if (strpos($rowText, 'Yallourn/Yallourn North') !== false) {
        // 提取主队名称(对应td里的a标签)
        $homeTeam = $row->find('td.team-home a', 0)->plaintext;
        // 提取客队名称
        $awayTeam = $row->find('td.team-away a', 0)->plaintext;
        // 提取赛事比分
        $score = $row->find('td.score', 0)->plaintext;

        // 输出结果,你也可以改成存数据库或者渲染到页面
        echo "对阵双方:{$homeTeam} VS {$awayTeam}\n";
        echo "当前比分:{$score}\n\n";
    }
}

// 记得清理资源,避免内存泄漏
$html->clear();

踩坑提示

  • 页面结构变了怎么办? 体育网站时不时会改页面布局,要是上面的选择器(比如tr.data-row)失效了,直接用浏览器F12开开发者工具,重新找赛事行、球队名称的标签和class就行。
  • 还是乱码? 打开页面源码,搜<meta charset="xxx">,把mb_convert_encoding里的原始编码改成对应的值就行。
  • 被网站拦截了? 除了加UA头,还可以给curl加个延迟,比如sleep(2),别太频繁请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:27:53