我不知道问题是否正确,但这是我的问题..
我想抓取此网站:https://www.easports.com/fifa/ultimate-team/compete/leaderboards以获取排行榜数据。
当我使用以下代码执行此操作时,我只获得页眉+页脚,而不是排行榜数据。
$client = new HttpClient();
$client->setAdapter("Zend\Http\Client\Adapter\Curl");
$client->setUri("https://www.easports.com/fifa/ultimate-team/compete/leaderboards");
$content = $client->send()->getBody();
var_dump($content);
我的卷曲有问题,还是这些数据不能卷曲?如果是这样,也许你有一个解决方案;)
答案 0 :(得分:0)
如果您在浏览器中打开开发人员工具,您可以看到为填充排行榜而进行的额外请求。您应该使用网址https://www.easports.com/cgw/api/fifa/fut/leaderboard?platform=xboxone®ion=ams&period=curr
来获取排行榜。这将返回以下布局中的JSON:
[
{
"rank": 1,
"persona": "persona",
"hasProfile": false,
"wins": 1,
"skill": "6",
"qualified": 0
}]
使用您的代码:
$client = new HttpClient();
$client->setAdapter("Zend\Http\Client\Adapter\Curl");
$client->setUri("https://www.easports.com/cgw/api/fifa/fut/leaderboard?platform=xboxone®ion=ams&period=curr");
$content = $client->send()->getBody();
var_dump($content);
然后可以使用以下方法处理:
$client = new HttpClient();
$client->setAdapter("Zend\Http\Client\Adapter\Curl");
$client->setUri("https://www.easports.com/cgw/api/fifa/fut/leaderboard?platform=xboxone®ion=ams&period=curr");
$content = $client->send()->getBody();
$leaderBoard = json_decode($content);
foreach($leaderBoard as $member){
echo $member['rank'] . '. ' . $member['persona'] . '(' . $member['wins'] . ' Wins)<br />';
}