有这个网站
http://www.oxybet.com/france-vs-iceland/e/5209778/
我想要的是刮掉整张桌子而不是这张桌子的部分。
例如,仅显示包含sportingbet stoiximan和mybet的行,并且我不需要所有列只有1 x 2列,也必须使用红色框或仅显示红色数字。这可以在scrape旁边的星号,或者我需要先在数据库上刮掉整个表然后查询数据库吗?
我现在得到的是这个代码,我在这个论坛上借用了另一个类似的问题:
<?php
require('simple_html_dom.php');
$html = file_get_html('http://www.oxybet.com/france-vs-iceland/e/5209778/');
$table = $html->find('table', 0);
$rowData = array();
foreach($table->find('tr') as $row) {
// initialize array to store the cell data from each row
$flight = array();
foreach($row->find('td') as $cell) {
// push the cell's text to the array
$flight[] = $cell->plaintext;
}
$rowData[] = $flight;
}
echo '<table>';
foreach ($rowData as $row => $tr) {
echo '<tr>';
foreach ($tr as $td)
echo '<td>' . $td .'</td>';
echo '</tr>';
}
echo '</table>';
?>
返回完整的表格。我想要的主要是以某种方式检测红色框中选择的数字(在1 x 2区域)并在我的刮擦旁边显示一个星号,其次我想知道它是否可能刮掉特定的列和行而不是一切我需要使用xpath吗?
我请求有人指出我在这方面花费数小时的正确方向,手册并没有解释很多http://simplehtmldom.sourceforge.net/manual.htm
答案 0 :(得分:0)
链接已经死了。但是,您可以使用xPath执行此操作,并通过颜色和顺序引用所需的单元格,以及更多方法。
这个片段会给你一般的要点;取自我正在研究的项目:
function __construct($URL)
{
// make new DOM for nodes
$this->dom = new DOMDocument();
// set error level
libxml_use_internal_errors(true);
// Grab and set HTML Source
$this->HTMLSource = file_get_contents($URL);
// Load HTML into the dom
$this->dom->loadHTML($this->HTMLSource);
// Make xPath queryable
$this->xpath = new DOMXPath($this->dom);
}
function xPathQuery($query){
return $this->xpath->query($query);
}
然后只需将查询传递给DOMXPath,例如//tr[1]