我正在抓取网页上的值并将其存储在数组中,此时我可以提取所有 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或类别,所以很难找到它。
<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>
答案 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类的所有引用。这将包含您开始使用所需的一切!