我是PHP和编码的新手,我无法弄清楚这一点。我正试图从this profile page获得杀戮次数。
目前,我想要的字符串是:
29362
当我查看页面源时,这个数字无处可见。
但是,当我使用inspect元素时,我发现:
<td class="num">29362</td>
如何获取inspect元素中显示的内容而不是查看页面源所显示的内容?
答案 0 :(得分:2)
在使用Firebug for Firefox或Safari和Chrome检查器等工具时,您可以看到在页面加载时会对数据进行一系列AJAX请求。虽然我没有深入挖掘这些请求返回的所有数据,但我确实看到了您正在寻找的数据中至少有一个:
http://uberstrike.com/profile/all_stats/631163
因此,在页面加载时,JavaScript会将一系列AJAX请求返回给服务器以获取所有数据,然后它操纵DOM将其全部插入到视图中。
如果您愿意,您的PHP可以直接请求我粘贴的URL和json_decode
响应。这将生成一个供您使用的数据结构,其中包含kills_all_time
属性中的该数字。
快速而肮脏的例子:
<?php
$data_url = 'http://uberstrike.com/profile/all_stats/631163';
$serialized_data = file_get_contents($data_url);
$data = json_decode($serialized_data, true);
var_dump($data['kills_all_time']);
答案 1 :(得分:0)
我看了,看起来当前没有API,所以你最好的方法是做一个跨网络服务器的http请求。获取您想要的页面,然后从那里获得大量的字符串数学。
我建议使用字符串搜索来查找<td class="name">Kills</td>
,并在其后面显示杀戮行。从那里它只是使用字符串数学提取数字。
答案 2 :(得分:0)
要添加JAAulde
解释的内容,似乎有一种方法可以解决这些AJAX请求。它们都基于可在URL末尾找到的配置文件ID:
http://uberstrike.com/public_profile/631163
然后在Safari调试器(我正在使用的)中,您可以看到直接连接到API调用的这些XHR(XMLHttpRequest)请求:
然后查看其中的数据显示了一些非常好的格式化JSON。大!不刮!因此,只需浏览这些网址即可查看您可以看到的内容:
http://uberstrike.com/profile/items
http://uberstrike.com/profile/user_info/631163
http://uberstrike.com/profile/user_loadout/631163
http://uberstrike.com/profile/all_stats/631163
查看all_stats
端点显示:
"kills_all_time":29362,
尼斯!
现在让我们像这样使用一些PHP json_decode
:
// Set the URL to the data.
$url = 'http://uberstrike.com/profile/all_stats/631163';
// Get the contenst of the URL via file_get_contents.
$all_stats_json = file_get_contents($url);
// Decode the JSON string with the 'true' optionso we get any array.
$all_stats_json_decoded = json_decode($all_stats_json, true);
// Dump the results for testing.
echo '<pre>';
print_r($all_stats_json_decoded);
echo '</pre>';
将转储这样的数组:
Array
(
[headshots_record] => 24
[nutshots_record] => 33
[damage_dealt_record] => 6710
[damage_received_record] => 31073
[kills_record] => 50
[smackdowns_record] => 45
[headshots_all_time] => 4299
[nutshots_all_time] => 1925
[kills_all_time] => 29362
[deaths_all_time] => 16491
…
现在让kills_all_time
做到这一点:
// Return the 'kills_all_time'.
echo $all_stats_json_decoded['kills_all_time'];
这给了我们:
29362