2016-03-25 12 views
2

Ich bin neu in der Programmierung. Also wähle ich eine Webseite mit Wordpress. Aber ich versuche, Wetterdaten von anderen Seiten zu sammeln, ich konnte kein passendes Plugin finden, um die Daten zu scrappen, und habe mich entschieden, es selbst auszuprobieren. Aber mit meinem begrenzten Verständnis der Programmierung gibt mir Probleme. Mit einer wenig Inspiration aus dem Internet habe ich das zusammen:PHP Daten von der Website scrape

$html = file_get_contents('http://www.frederikshavnhavn.dk/scripts/weatherwindow.php?langid=2'); //get the html returned from the following url 

$poke_doc = new DOMDocument(); 

libxml_use_internal_errors(false); //disable libxml errors 

if(!empty($html)){ //if any html is actually returned 

    $poke_doc->loadHTML($html); 
    libxml_clear_errors(); //remove errors for yucky html 

    $poke_xpath = new DOMXPath($poke_doc); 

    //get all the spans's with an id 
    $poke_type = $poke_xpath->query("//span[@class='weathstattype']"); 
    $poke_text = $poke_xpath->query("//span[@class='weathstattext']"); 

    foreach($poke_text as $text){ 
    foreach($poke_type as $type){ 
    echo $type->nodeValue; 
    echo $text->nodeValue . "</br>"; 
    continue 2; 
    } 
    break; 
}  
} 

sein, dass dies alles neu für mich, und ich versuche wirklich zu bekommen dies für mich zu arbeiten, für ein besseres Verständnis des Codes der Hoffnung hinter den Arbeiten.

Was ich versuche zu erreichen, ist eine formatierte Liste mit den Daten. 1. Wert $ Typ $ Text 2. Wert $ Typ $ Text

Gerade jetzt gibt es mir eine Menge Ärger. Wenn ich die Fortsetzung 2 verwende, ändert es nicht den Wert $ type, aber wenn ich einfach continue-Anweisung verwende, ändert sich $ type, aber nicht $ text. Wie kann ich beide Werte jedes Mal ändern?

Danke für Ihre Hilfe.

+0

vindhastighed Sie sollten die Ausgabe von 'var_dump ($ poke_type) hinzufügen ; 'und' var_dump ($ poke_text); '. Enthalten diese mindestens alle Informationen, die Sie benötigen? – jeroen

+0

Ja, sie sollten alle Informationen enthalten. Aber ich bin mir nicht sicher warum ich var_dump ($ poke_type) brauche; und var_dump ($ poke_text); ? Oder wo, wie ich sehe, geben sie mir nur ein paar Fehler? – Lasser

+0

Vielleicht möchten Sie [Goutte] ausprobieren (https://github.com/FriendsOfPHP/Goutte). Hier ist, wie Sie es verwenden http://stackoverflow.com/questions/15628926/how-to-use-goutte#answer-19257829 – kabirbaidhya

Antwort

0

Buddy in Ihrem Code Ihren foreach-Schleifen (in letzter) Sie $ Art wie $ Text verwenden und $ text wie $ Art .. ich den Code ausführen und nur die Variablen ändern, da sie ihre Arbeit in Ordnung sein sollte ..

$html = file_get_contents('http://www.frederikshavnhavn.dk/scripts/weatherwindow.php?langid=2'); //get the html returned from the following url 

$poke_doc = new DOMDocument(); 

libxml_use_internal_errors(false); //disable libxml errors 

if(!empty($html)){ //if any html is actually returned 

    $poke_doc->loadHTML($html); 
    libxml_clear_errors(); //remove errors for yucky html 

    $poke_xpath = new DOMXPath($poke_doc); 

    //get all the spans's with an id 
    $poke_type = $poke_xpath->query("//span[@class='weathstattype']"); 

    $poke_text = $poke_xpath->query("//span[@class='weathstattext']"); 

    foreach($poke_text as $text){ 
    echo $text->nodeValue; 
    } 
    foreach($poke_type as $type){ 
    echo $type->nodeValue; 
    } 
} 

Und die, die ich aus dem Code bekam (durch die Variablen in der Schleife zu ändern)

196a ° (Syd) 5,6 ° C 4,1 m/s bis 5 m/s -6 cm 1004 hPa Luftdampftemperatur Luftdichtigkeit maxd vindhastiged Vandstand Lufttechnik

Jetzt haben Sie Ihre Daten Ich denke, Sie verwalten können, wie sie sortieren, ...

1

versuchen diese Methode fügt hinzu:

function get_inner_html($node) { 
    $innerHTML= ''; 
    $children = $node->childNodes; 
    foreach ($children as $child) { 
     $innerHTML .= $child->ownerDocument->saveXML($child); 
    } 

    return $innerHTML; 
} 

dann die foreach mit diesem ersetzen:

foreach($poke_text as $text){ 
    //echo $type ->nodeValue . "</n>"; 
     echo get_inner_html($text).'<br>'; 

    } 
    foreach($poke_type as $type){ 
    //echo $text ->nodeValue; 
    echo get_inner_html($type).'<br>'; 
    } 

produziert dies:

  1. 197Â ° (Syd) 5,7 Â ° C Stigende 4,8 m/s Stigende 5,4 m/s Stigende -6 cm Faldende 1004 hPa Vindretning Lufttemperatur Luft Middel vindhastighed Max Vandstand Lufttryk
Verwandte Themen