HTML Simple dom PHP scraper

时间:2015-08-25 13:48:29

标签: php parsing html-parsing

我正在尝试从此website解析团队统计信息。

我想解析“Key stats”块,这里是截图

Wins / draws / losses - 363 / 8 / 168
Total kills - 50715
Total deaths - 45101
Rounds played - 14083
K/D Ratio - 1.12
Best player(Average rating) - olofmeister (1.15)

Screenshot(我没有代表,添加图片,抱歉)

我正在使用Simple HTML Dom PHP解析器,我已经开始使用基本的东西了。我已经提取了所有链接,用于测试目的,它对我来说很好。

include 'simple_html_dom.php';

$url = 'http://www.hltv.org/?pageid=179&teamid=4991&gameid=2';
$html = file_get_html($url);

foreach($html->find('a') as $element) {
    echo $element->href . '<br>';
}

$html->clear();
unset($html);

之后,我开始提取主div块,保留所有内容:

include 'simple_html_dom.php';

$url = 'http://www.hltv.org/?pageid=179&teamid=4991&gameid=2';
$html = file_get_html($url);

foreach ($html->find('div[style="float:right;width:300px;"]') as $div) {
    echo $div . '<br/>';
};

工作正常,结果令人满意 - prntscr.com/88p8l1

然后,我开始变得更深,陷入困境。

include 'simple_html_dom.php';

$url = 'http://www.hltv.org/?pageid=179&teamid=4991&gameid=2';
$html = file_get_html($url);

foreach ($html->find('div[style="float:right;width:300px;"]') as $div) {
    $item['stat-title'] =  $html->find('div[style="height:22px;background-color:white"]')->plaintext;
    $item['stat-data']  =  $html->find('div[style="height:22px;background-color:white"]')->plaintext;
    $items[] = $item;
};

print_r($items);

此时,我真的很挣扎,如何显示我需要的结果。

我已经单独测试了一部分代码 - 它运行正常。

foreach ($html->find('div[style="height:22px;background-color:#E6E5E5"]') as $div) {
    echo $div . '<br/>';
};

我想要达到的结果:

<div class="stat">
    <span class="stat-title">Wins / draws / losses</span>
    <span class="stat-data">363 / 8 / 168</span>
</div>

我需要对我当前的问题有一个全新的看法。提前谢谢。

1 个答案:

答案 0 :(得分:1)

$item;

foreach ($html->find('div.covGroupBoxContent div.covSmallHeadline') as $div) {
        if(isset($div->style) && $div->style=="font-weight:normal;width:180px;float:left;color:black;text-align:right;") {
            //select black text which is the stat data
            $item["stat-data"] = $div->plaintext;
            //the previous sibling of the data is the title (based on the website)
            $item["stat-title"] = $div->prev_sibling()->plaintext;
            $items[] = item;
        }
    };

希望这会有所帮助。请正确定义问题。