2016-03-25 3 views
2

Я новичок в программировании. Поэтому я выбираю создание веб-страницы с помощью Wordpress. Но я пытаюсь собрать данные о погоде с других сайтов, я не мог найти подходящий плагин для очистки данных и решил попробовать и собрать что-то вместе. Но мое ограниченное понимание программирования дает мне проблемы. С небольшим вдохновением из Интернета я поставил это вместе:PHP 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; 
}  
} 

Будучи, что это все ново для меня, и я действительно пытаюсь получить эту работу для меня, надеясь, что для лучшего понимания коды за работами.

То, что я пытаюсь достичь, - это форматированный список с данными. 1. value $ type $ text 2. value $ type $ text

Сейчас у меня много проблем. , когда я использую continue 2, он не меняет значение $ type, но когда я просто использую оператор continue, он меняет тип $ type, но не $ text. Как я могу заставить его изменять оба значения каждый раз?

Благодарим за помощь.

+0

Вы должны добавить вывод 'var_dump ($ poke_type) ; 'и' var_dump ($ poke_text); '. По крайней мере, они содержат всю необходимую информацию? – jeroen

+0

Да, они должны всю информацию. Но я не уверен, зачем мне нужен var_dump ($ poke_type); и var_dump ($ poke_text); ? Или, где сказать, как я вижу, они дают мне лишь пару ошибок? – Lasser

+0

Возможно, вы захотите попробовать [Goutte] (https://github.com/FriendsOfPHP/Goutte). Вот как вы его используете http://stackoverflow.com/questions/15628926/how-to-use-goutte#answer-19257829 – kabirbaidhya

ответ

0

Баддите в коде вашей Foreach петля (в прошлом), вы используете $ типа как $ текста и $ текста в $ типа .. Я бег кода и просто изменить переменную, как они должны быть его работой хорошо ..

$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; 
    } 
} 

И этого, что я получил от вашего кода (путем изменения переменных в цикле)

196a ° (Сида) 5.6 ° C 4,1 м/с 5 м/с -6 см 1004 hPa Vindretning Lufttemperatur Middel vindhastighed Макс vindhastighed Vandstand Lufttryk

Теперь у вас есть данные, которые я думаю, что вы можете управлять как сортировать их ...

1

попробуйте добавить этот метод:

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

    return $innerHTML; 
} 

затем заменить Еогеасп с этим:

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>'; 
    } 

производит следующее:

  1. 197 ° (Syd),7 Â ° C Stigende 4,8 м/с Stigende 5,4 м/с Stigende -6 см Faldende 1004 гПа Vindretning Lufttemperatur Middel vindhastighed Макс vindhastighed Vandstand Lufttryk
Смежные вопросы