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

如何使用Curl提取网页指定内容?以获取FIFA球员名称为例

如何从Sofifa页面提取特定球员信息?

嘿,我来帮你搞定这个问题!你现在的代码是直接输出整个页面的HTML,但要拿到球员名称这类特定内容,得用DOM解析来精准抓取,而不是一股脑把整个页面打出来。下面给你两种靠谱的实现方式:

方法一:用PHP的DOMDocument + DOMXPath(推荐)

这是最稳定的方案,能正确解析HTML结构,哪怕页面有轻微的代码不规范也能处理。

<?php
// 整理请求URL(你原来的URL里有重复的pn参数,我帮你合并成逗号分隔的格式了)
$url = "https://sofifa.com/players?aeh=22&ptl=84&pth=99&pn=27,25,23";

// 初始化curl,加上User-Agent避免被网站拦截
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36');
$output = curl_exec($ch);
curl_close($ch);

// 处理HTML解析,忽略页面不规范导致的警告
libxml_use_internal_errors(true);
$dom = new DOMDocument();
$dom->loadHTML($output);
libxml_clear_errors();

// 用XPath定位球员名称元素(根据Sofifa当前页面结构,球员名在class为"bp3-text-overflow-ellipsis"的a标签里)
$xpath = new DOMXPath($dom);
$playerNodes = $xpath->query('//a[@class="bp3-text-overflow-ellipsis"]');

// 遍历输出提取到的球员名称
if ($playerNodes->length > 0) {
    echo "提取到的球员名称:<br>";
    foreach ($playerNodes as $node) {
        echo "- " . $node->nodeValue . "<br>";
    }
} else {
    echo "没找到球员名称,可能是页面结构更新了,需要调整XPath表达式";
}
?>

关键点说明

  • 加了User-Agent:很多网站会拦截没有标识的爬虫请求,加个浏览器UA能大幅提高请求成功率。
  • DOM解析:相比正则,DOM能准确识别HTML的层级结构,就算页面小幅度更新,只需要调整XPath路径就行。
  • 忽略解析警告:网页的HTML经常不严格符合规范,用libxml_use_internal_errors(true)可以避免解析时抛出一堆无关警告。

方法二:用正则表达式(临时应急用)

正则的缺点是一旦页面结构变动就会失效,所以只适合临时抓取,不建议长期用:

<?php
// 前面的curl请求部分和上面一致,省略重复代码...

// 用正则匹配球员名称(示例表达式,需根据实际页面结构调整)
preg_match_all('/<a class="bp3-text-overflow-ellipsis"[^>]*>([^<]+)<\/a>/', $output, $matches);

if (!empty($matches[1])) {
    echo "提取到的球员名称:<br>";
    foreach ($matches[1] as $name) {
        echo "- " . htmlspecialchars($name) . "<br>";
    }
} else {
    echo "未匹配到球员名称,请检查正则表达式是否匹配当前页面";
}
?>

额外注意事项

  • 遵守网站规则:不要频繁发送请求给服务器施压,最好加个请求间隔;同时查看目标网站的robots.txt,确认是否允许抓取这类内容。
  • 动态内容处理:如果页面是滚动加载更多球员,单纯curl只能拿到初始加载的内容,这时候可能需要用PhantomJS或Selenium这类工具来模拟浏览器渲染。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:42:52