简单的HTML DOM Parser-刮取没有id或类的html内容

时间:2015-09-08 13:53:40

标签: php html parsing dom

我正在抓取网页上的值并将其存储在数组中,此时我可以提取所有 td.Place 值,因为它有一个类。

注意:我使用Simple HTML DOM Parser

我当前的代码有效:

<?php 

include('simple_html_dom.php');
$html = file_get_html('http://www...');

// initialize empty array to store the data array from each row
$theData3 = array();

// initialize array to store the cell data from each row
$rowData3 = arra

foreach($row->find('td.Place') as $cell) 
{

// push the cell's text to the array
$rowData3[] = $cell->innertext;

}
// push the row's data array to the 'big' array
$theData3[] = $rowData3;

}

print_r($theData3);
 ?>

问题是什么?

我想提取值 100 &amp; 等级=&#34; Grad 中的 - 3 。** class =&#34; Grad *中的前两个td。因为这两个TD值没有id或类别,所以很难找到它。

这是我正在抓取的HTML

<tr class="PersonrRow odd">
        <td></td>
        <td class="place">T9</td>
        <td>
        <span class="rank"></span>16</td>
        <td class="Grad">-7
        </td>
        <td>
        100
        </td>
        <td>
        -3
        </td>
        <td>
        712
        </td>
        <td>
        682
        </td>
        <td>
        702
        </td>
        <td>
        68
        </td>
        <td class="person large"></td>
        <td style="">
        277
        </td>
    </tr>

1 个答案:

答案 0 :(得分:3)

好的,所以在做了一些研究并挖掘我的旧文件之后,这就是我为你提出的。你不需要任何花哨的插件或任何东西只是php DOMDocument:

<强> PHP

<?php
    $thedata3 = array();
    $rowdata3 = array();
    $DOM = new DOMDocument();
    $DOM->loadHTMLFile("file path or url");

    // get the actual table itself
    $xpath = new DOMXPath($DOM);
    $table = $xpath->query('//table[@id="tableID"]')->item(0);


    $rows = $table->getElementsByTagName("tr");

    for ($i = 0; $i < $rows->length; $i++) {
        $cols = $rows->item($i)->getElementsbyTagName("td");
        for ($j = 0; $j < $cols->length; $j++) {

          //change $cols->item($j) $cols->item('insert column number here')
          // that will give you the proper column you're after
           array_push($rowdata3, $cols->item($j)->nodeValue);
        }
        array_push($thedata3, $rowdata3);
        $rowdata3 = array(); //empty the $rowdata3 array for fresh results
    }
?>

这是我能用你所提供的最好的方式,但我希望它能以某种方式帮助你,如果你需要更多帮助,请告诉我。

易于访问和可读性。我建议只是按照你的计划将所有内容都放入关联数组中,然后在删除所有数据之后。操纵数组数据并从中提取所需内容。这应该更容易。

<强>引用

PHP.net DOMDocument http://php.net/manual/en/class.domdocument.php

PHP.net DOMXPath http://php.net/manual/en/class.domxpath.php

此链接包含对DOMDocument和DOMXPath类的所有引用。这将包含您开始使用所需的一切!