Versuchen, Daten aus einer Tabelle auf einer Website zu scrappen. Ich habe das folgende PHP geschrieben, aber es funktioniert nicht.Durchlaufen einer Tabelle mit Simple HTML DOM
Nach Fehler empfangen: Hinweis: Der Versuch 27 Eigenschaft von Nicht-Objekt in DataScraping.php auf Linie zu bekommen
//Sets the HTML DOM Library
require_once 'C:/xampp/php/lib/SimpleHTMLDOM/simple_html_dom.php';
$html = new simple_html_dom();
$html = file_get_html('https://www.flightradar24.com/data/flights/british-airways-ba-baw');
foreach($html->find('table[id=tbl-datatable]') as $datatable) {
foreach($datatable->find('tr') as $tr) {
foreach($tr->find('td') as $td) {
if(strpos($td->find('a', 0)->href, 'https://www.flightradar24.com/data/flights/') !== false) {
echo $td->find('a', 0)->innertext .", " .$td->find('a', 0)->href;
}
}
}
}
Ebenfalls erwähnenswert, diese Daten öffentlich verfügbar ist, und es ist nur für den persönlichen Gebrauch . Bitte kommentieren Sie keine Urheberrechtsverletzungen - es ist nichts falsch daran, was ich tun möchte.
Ich versuche nur die Flugnummer nur zu kratzen, sowohl den inneren Text als auch die URL, die dahintersteckt. Irgendwelche Hilfe, wo ich falsch liege?
Zusätzliche Test liefert die Daten, die ich brauche, aber mit dem gleichen Fehler in zwischen den Reihen:
foreach($html->find('table[id=tbl-datatable]') as $datatable) {
foreach($datatable->find('tr') as $tr) {
foreach($tr->find('td') as $td) {
if (strpos($td->find('a', 0)->href, '/data/flights/') !== false) {
$test = $td->find('a', 0)->href;
$test2 = $td->find('a', 0)->innertext;
echo $test .", " .$test2;
}
}
}
}
Al richtig, also welche dieser Linien ist Linie 27? –
Das Echo nach der if-Anweisung. – DARKOCEAN
Ich bin überrascht, dass die if-Anweisung wahr bewertet (aber es muss, wenn Sie diesen Fehler sehen); Wenn ich die Quelle dieser Seite ansehe, sind die hrefs alle relativ. Vielleicht verstehe ich nicht, wie SimpleHTMLDOM funktioniert. –