PHP - 获取通过Javascript AFTER页面加载加载到DOM中的数据

时间:2016-03-30 07:39:04

标签: javascript php jquery html ajax

我是AJAX和PHP的新手。我正在努力获取"总共"此页面上的值 http://csgobackpack.net/?nick=xreptar2 通过PHP HTML Dom Parser加载其html并从其容器中获取值。

但是,我遇到了两个问题。

  1. 解析器不会将页面加载到"?nick = xreptar2"并加载" http://csgobackpack.net/"代替
  2. "总计"数字值在页面加载后通过Javascript加载到DOM中,我无法获取它
  3. 我该如何解决这个问题?我正在使用此解析器:http://simplehtmldom.sourceforge.net/

    我的代码:

    <?php
    include_once('simple_html_dom.php');
    
    $html = file_get_html("http://csgobackpack.net/?nick=xreptar2");
    
    echo $html->plaintext;
    
    echo ________________;
    
    foreach($html->find('p') as $element) {
           echo $element->plaintext;
    }
    ?>
    

    在线php:http://watchgameofthron.es/ajax/stackoverflow1.php

    上面的在线预览显示没有HTML被解析。因此,我编辑了代码,使其从具有类似功能的其他网页进行解析。

      <?php
    include_once('simple_html_dom.php');
    
    $html = file_get_html("http://steam.tools/itemvalue/#/xreptar2-730");
    
    echo $html->plaintext;
    
    echo ________________;
    
    foreach($html->find('p') as $element) {
           echo $element->plaintext;
    }
    ?>
    

    在线php:http://watchgameofthron.es/ajax/stackoverflow2.php

1 个答案:

答案 0 :(得分:0)

在快速查看解析器文档后,我非常确定它只加载了初始DOM元素,并且不会运行任何脚本。

如果你想获得背包的价值,你应该使用网站API:

http://csgobackpack.net/api/GetInventoryValue/?id=xreptar2&ref=1

它是一个简单的GET请求,然后返回一个简单的JSON字符串,您可以通过json_decode将其转换为对象。

您不需要使用任何精美的外部模块来执行此操作。

应该这么简单:

$profileID = "xreptar2";
$connection = curl_init();

curl_setopt_array($connection, [
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_CONNECTTIMEOUT => 20,
    CURLOPT_TIMEOUT => 60,
    CURLOPT_URL => "http://csgobackpack.net/api/GetInventoryValue/?id={$profileID}&ref=1",
    CURLOPT_FAILONERROR => true
]);

$jsonString = curl_exec($connection);

if ( $jsonString !== false )
{
    $data = json_decode($jsonString);
}

然后您可以使用根据API的$data格式如下: {&#34;成功&#34;:真,&#34;值&#34;:&#34; 16965.24&#34;&#34;项目&#34;:&#34; 734&#34;,& #34;货币&#34;:&#34; USD&#34;}

我希望它有所帮助