2011-01-10 2 views
-1

У меня была проблема со сбоем на сайте http://www.weather.bm/radarMobile.asp, Fatherstorm gave me a great solution, но у него были некоторые незначительные ошибки в отношении времени начала и количества источников изображений, иногда дающих 9 или 10, но код был установлен в десять.scraping javascript array

С другой стороны, один человек (marcog) дал мне this answer:.

«Простой поиск через строки, содержащей radarFileNames = новый массив будет возвращать эту строку Затем вы можете извлечь URL, с двумя preg_split() s: сначала на \(|\), затем разделите второй токен на ', '. Наконец, префикс http://www.weather.bm/ к URL-адресам. "

Я надеялся, если кто-нибудь сможет показать мне код, о котором он говорил. Мне нравится изучать подобные вещи, но мне просто нечего кого-то учить. Я надеюсь, что вы, ребята, могли бы помочь

Javascript массив:

radarFileNames = new Arra(  
'images/Radar/CurrentRadarAnimation_100km_sri/100km_sri-radar-2011-01-04-1446.jpg',  
'images/Radar/CurrentRadarAnimation_100km_sri/100km_sri-radar-2011-01-04-1456.jpg',  
'images/Radar/CurrentRadarAnimation_100km_sri/100km_sri-radar-2011-01-04-1506.jpg',  
'images/Radar/CurrentRadarAnimation_100km_sri/100km_sri-radar-2011-01-04-1516.jpg',  
'images/Radar/CurrentRadarAnimation_100km_sri/100km_sri-radar-2011-01-04-1526.jpg',  
'images/Radar/CurrentRadarAnimation_100km_sri/100km_sri-radar-2011-01-04-1536.jpg',  
'images/Radar/CurrentRadarAnimation_100km_sri/100km_sri-radar-2011-01-04-1546.jpg',  
'images/Radar/CurrentRadarAnimation_100km_sri/100km_sri-radar-2011-01-04-1556.jpg',  
'images/Radar/CurrentRadarAnimation_100km_sri/100km_sri-radar-2011-01-04-1606.jpg' 

также было бы возможно вывести IMG внутри уль Li/Li/мкл, который имеет свой собственный (класс уль класс Li) класс

Im также используя простой HTML DOM парсер, но я не могу получить изображения только загруженные изображения в outputed

здесь образец с использованием кода fatherstorm http://j2sdesign.com/rgw/article/20101222/NEWS01/712229951/0/example/r1.php

мой код из fatherstorm

?php 
     $localOffset = "+2 Hours"; //change this to your local offset from the image times you need. for me it's 1 hours..... 
     $start = strtotime("-100 Minutes " . $localOffset); // go back 90 minutes (The limit of the available images) 
     $start = ($start - ($start % (600)) + (60 * 6)); //go to the next earlier 6 minute mark (all images appear to be at the 6 minute mark)) 
     for ($x = 1; $x <= 10; $x++) { 
      $DateTime = date("Y-m-d-Hi", $start); // set the image time we want. 
      $fName = ("http://www.weather.bm/images/Radar/CurrentRadarAnimation_100km_sri/100km_sri-radar-$DateTime.jpg"); // set the filename 
      echo" <center>$DateTime</center> <img class='radarImg' src='$fName' alt='$fName' title='$fName'/><br/."; // echo (or add to a stack or variable...) your image node 
      $start+= (600); //add 10 minutes 


     } 
     ? 

марио вы имеете в виду, как это :

<?php 
     $localOffset = "+2 Hours"; //change this to your local offset from the image times you need. for me it's 1 hours..... 
     $start = strtotime("-100 Minutes " . $localOffset); // go back 90 minutes (The limit of the available images) 
     $start = ($start - ($start % (600)) + (60 * 6)); //go to the next earlier 6 minute mark (all images appear to be at the 6 minute mark)) 
     for ($x = 1; $x <= 10; $x++) { 
      $DateTime = date("Y-m-d-Hi", $start); // set the image time we want. 
      $fName = ("http://www.weather.bm/images/Radar/CurrentRadarAnimation_100km_sri/100km_sri-radar-$DateTime.jpg"); // set the filename 
      echo" <center>$DateTime</center> <img class='radarImg' src='$fName' alt='$fName' title='$fName'/><br/."; // echo (or add to a stack or variable...) your image node 
      $start+= (600); //add 10 minutes 
     $html = file_get_contents('http://www.weather.bm/radarMobile.asp'); preg_match('/radarFileNames = new Array\((.+?)\);/ims', $html, $m); $files = explode(",", $m[1]); 

     } 
     ?> 
+2

Я действительно не вижу здесь вопроса. Почему бы тебе просто не попросить у Марко разъяснений? –

+0

-1, это gimme сообщение. – goat

ответ

0

Попробуйте это:

//not tested 
var len=radarFileNames.length, links=''; 

for(var i=0; i<len; i++) { 
    var links = links + '<a href="radarFileNames[i]">'+radarFileNames[i] + '</a>'; 
} 

document.getElementById("some_id").innerHTML = links; 
+0

Благодарим вас за помощь, но где я могу поместить этот код и где разместить URL-адрес для сайта, который будет извлечен, спасибо – cooldude

1

Прочитайте PHP руководство по регулярным выражениям. В этом случае это так же просто:

$html = file_get_contents('http://www.weather.bm/radarMobile.asp'); 
preg_match('/radarFileNames = new Array\((.+?)\);/ims', $html, $m); 
$files = explode(",", $m[1]); 
// then output <img>s 

Взрыв() здесь проще, чем preg_split. Но тогда для каждого имени файла в массиве требуется trim(), а второй trim($filename, "'"), чтобы избавиться от охватывающих котировок.

+0

Где я могу вставить этот код Im using – cooldude

+0

Где я могу добавить свой код? Я редактировал свой пост и добавил мой код не то, что ваша ложка кормит меня, но я просто не знаю, что делать, спасибо за помощь. Или вы имеете в виду, что я должен использовать синтаксический анализатор simplehtmldon? – cooldude

+0

@cooldude: это для извлечения. не относится к обходному коду. ну, см. править. нет простого синтаксического анализатора. – mario