【问题标题】:PHP Curl to get ajax data or something like thatPHP Curl 获取 ajax 数据或类似的东西
【发布时间】:2017-03-21 12:09:03
【问题描述】:

我不知道这个问题是否正确,但这是我的问题..

我要爬取这个网站: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);

我的卷曲有问题还是不能卷曲这些数据?如果是这样,也许你有一个解决方案;)

【问题讨论】:

  • 抓取第一页后,您还需要抓取ajax url,以获取它的数据

标签: php ajax curl


【解决方案1】:

如果您在浏览器中打开开发者工具,您可以看到完成了哪些额外请求来填充排行榜。您应该使用 url https://www.easports.com/cgw/api/fifa/fut/leaderboard?platform=xboxone&region=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&region=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&region=ams&period=curr");
$content = $client->send()->getBody();
$leaderBoard = json_decode($content);
foreach($leaderBoard as $member){
    echo $member['rank'] . '. ' . $member['persona'] . '(' . $member['wins'] . ' Wins)<br />';
}

【讨论】:

  • @HansMartin 知道如何通过这个 api 获得单独的月份,而不仅仅是当前和以前的月份?谢谢
猜你喜欢
  • 1970-01-01
  • 2016-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-30
  • 2010-10-26
相关资源
最近更新 更多