搜索html表并使用php编写特定的行/列
我编写了一个代码,从另一个网站读取一个表并将其写在我的表上。现在,我只想阅读特定的行/列,并将其写在我的站点上。表格中充满了天气数据,每5分钟刷新一次。我只需要完整和半小时的值,而不是行中的所有值,只需要温度。例如,每五分钟有一行包含温度值、湿度、太阳辐射等。我需要找到一个值,比如05:00,以及该行的只读/写温度列。在这种情况下,它是:05:00 12,5°C,我需要48个值,因为每天有24个小时,包括另外24个半小时,总共是48个,对吗 这是我代码的一部分:搜索html表并使用php编写特定的行/列,php,html,search,html-table,Php,Html,Search,Html Table,我编写了一个代码,从另一个网站读取一个表并将其写在我的表上。现在,我只想阅读特定的行/列,并将其写在我的站点上。表格中充满了天气数据,每5分钟刷新一次。我只需要完整和半小时的值,而不是行中的所有值,只需要温度。例如,每五分钟有一行包含温度值、湿度、太阳辐射等。我需要找到一个值,比如05:00,以及该行的只读/写温度列。在这种情况下,它是:05:00 12,5°C,我需要48个值,因为每天有24个小时,包括另外24个半小时,总共是48个,对吗 这是我代码的一部分: <?php $trazi
<?php
$trazi = ':00';
$citaj = file('proba.txt');
foreach($citaj as $linija)
{
if(strpos($linija, $trazi) !== false)
echo $linija;
}
$traziURL = "somepage";
$stranica = file_get_contents($traziURL);
$tablica = '/(<table.*<\/table>)/s';
preg_match_all($tablica, $stranica, $zeit);
echo $zeit[0][0];
$ime = "proba.txt";
$table = fopen($ime, 'w') or die ("Error!");
$podaci = $zeit[0][0];
fwrite($table, $podaci);
fclose($table);
?>
有一种可能性是,它对您不起作用,因为某些部件缺失,但只是为了给您一个想法。我确信有多种其他方法可以做到这一点,但我会这样做
<?php
/**
* @author Bart Degryse
* @copyright 2013
*/
function getData() {
//Get the html page
$url = "http://www.essen-wetter.de/table.php";
$content = file_get_contents($url);
//Turn it into a dom document searchable by xpath
$dom = new DOMDocument();
$dom->loadHTML($content);
$xpath = new DOMXPath($dom);
//Get field names
$query = "//tr/td[position()=1 and normalize-space(text()) = 'Zeit']";
$entries = $xpath->query($query);
$entry = $entries->item(0);
$tr = $entry->parentNode;
foreach ($tr->getElementsByTagName("td") as $td) {
$fieldnames[] = $td->textContent;
}
//Get field data
$query = "//tr/td[position()=1 and (substring-after(normalize-space(text()),':') = '00' or substring-after(normalize-space(text()),':') = '30')]";
$entries = $xpath->query($query);
foreach ($entries as $entry) {
$fieldvalues = array();
$tr = $entry->parentNode;
foreach ($tr->getElementsByTagName("td") as $td) {
$fieldvalues[] = $td->textContent;
}
$data[] = array_combine($fieldnames, $fieldvalues);
}
//Return data set
return $data;
}
//Gather the data
$data = getData();
//Do something with it
echo "<pre>\n";
foreach ($data as $row) {
echo "Temperature at {$row['Zeit']} was {$row['Temperatur']}.\n";
}
echo "</pre><hr><pre>\n";
print_r($data);
echo "</pre>\n";
?>
为此:
备注
请注意,虽然这样做在技术上并没有那么难,但在法律上,你是站在宽松的立场上的。该页面上的数据版权归Markus Wolter所有。未经他的同意将他的数据用于您自己的目的被视为盗窃。谢谢您的回复!很好!我正在工作的网站不是在线的,它只是我正在使用Xampp进行的某个项目,所以我只是使用这个网站,因为它的表格适合我的需要。无论如何,谢谢你的提醒!我就把它拿走,做我自己的!当然“用它做点什么”部分只是一个例子。基本上由您决定如何使用收集的数据。使用此选项在句子
echo“\n”中显示数据;foreach($row形式的数据){echo“温度在{$row['Zeit']}是{$row['Temperature']}.\n;}echo”“
或要写入制表符分隔的文件,请使用类似以下内容的foreach($row数据){file\u put\u contents('myfile.txt',“{$row['Zeit']}\t{$row['temperature']}\n',file\u APPEND)}
$fieldnames[] = $td->textContent;
$fieldvalues[] = utf8_decode($td->textContent);