Autor | Zpráva | ||
---|---|---|---|
Re4DeR Profil |
#1 · Zasláno: 28. 2. 2012, 16:09:07
Ahoj používáte někdo simplehtml? Můžete mi prosím pomoci s tímto problémem ?
Mám soubor test.html který vypadá takto: <table class="test" border="0" cellpadding="0" cellspacing="0"> <tr> <td> <a target="_blank" href="http://seznam.cz/index.html" title="open link"> <script language='Javascript'>document.write(unescape('%54%65%73%74%6F%76%61%63%69%20%74%65%78%74'));</script> </a> </td> </tr> </table> A potřebuji z toho získat href linku = "h t t p : / / seznam.cz/index.html" . To se mi bohužel nedaří. Ale pokud soubor načtu pres funkci file() tak se to načte. Zkoušel jsem to i pomocí DOM, ale s tím jsem nikdy nepracoval a neumím s tím. Chybí mi zde není něco jako innerHTML Soubor kterým to zkouším získat: <?php require 'simple_html_dom.php'; echo "Toto vrací načítání přes php funkci file:<br>"; echo "----------------------------------------------------------<br>"; $lines = file('test.html'); foreach ($lines as $line_num => $line) { echo htmlspecialchars($line) . "<br>\n"; } echo "----------------------------------------------------------<br>"; echo "<br><br><br>"; echo "Toto vrací načítání přes knihovnu SIMPLE HTML (chybějící href):<br>"; echo "----------------------------------------------------------<br>"; $html = file_get_html("test.html"); foreach($html->find('table.test') as $prvek) { echo htmlspecialchars($prvek); } echo "<br>----------------------------------------------------------<br>"; echo "<br><br><br>"; echo "Toto vrací načítání přes php dom (chybějící href):<br>"; echo "----------------------------------------------------------<br>"; $s = file_get_contents('test.html'); $dom = new DOMDocument(); $ok = $dom->loadHTML($s); $table = $dom->getElementsByTagName('table'); foreach ($table as $tag) { echo htmlspecialchars($tag->nodeValue); } echo "<br>----------------------------------------------------------<br>"; echo "<br><br><br>"; echo "Toto vrací načítání přes php dom xpath (chybějící href):<br>"; echo "----------------------------------------------------------<br>"; $xpath = new DOMXPath($dom); $link = $xpath->query('//table/tr/td')->item(0)->nodeValue; echo $link; echo "<br>----------------------------------------------------------<br>"; ?> a výsledek co mi to vyplivne: Toto vrací načítání přes php funkci file: ---------------------------------------------------------- <table class="test" border="0" cellpadding="0" cellspacing="0"> <tr> <td> <a target="_blank" href="http://seznam.cz/index.html" title="open link"> <script language='Javascript'>document.write(unescape('%54%65%73%74%6F%76%61%63%69%20%74%65%78%74'));</script> </a> </td> </tr> </table> ---------------------------------------------------------- Toto vrací načítání přes knihovnu SIMPLE HTML (chybějící href): ---------------------------------------------------------- <table class="test" > <tr> <td> <a target="_blank" > <script language='Javascript' >document.write(unescape('%54%65%73%74%6F%76%61%63%69%20%74%65%78%74'));</script> </a> </td> </tr> </table> ---------------------------------------------------------- Toto vrací načítání přes php dom (chybějící href): ---------------------------------------------------------- document.write(unescape('%54%65%73%74%6F%76%61%63%69%20%74%65%78%74')); ---------------------------------------------------------- Toto vrací načítání přes php dom xpath (chybějící href): ---------------------------------------------------------- document.write(unescape('%54%65%73%74%6F%76%61%63%69%20%74%65%78%74')); ---------------------------------------------------------- Nejlepší řešení by asi bylo přes simplehtml. Nevíte jak z toho ten href dostat? Děkuji za pomoc |
||
peta Profil |
#2 · Zasláno: 29. 2. 2012, 13:22:36
google = php parse html
Naslo mi to class: http://simplehtmldom.sourceforge.net/ dokumentace: http://simplehtmldom.sourceforge.net/manual.htm download: http://sourceforge.net/projects/simplehtmldom/files/ Nebo priklad na parsovani XML pro pocasi <?php //http://www.google.com/ig/api?weather=opava,cz //http://www.exorithm.com/algorithm/view/weather_forecast function att($att,$type,$row=0) { global $xml; switch ($type) { case 1 : return $xml->weather->current_conditions->{$att}['data']; case 2 : return $xml->weather->forecast_conditions->$row->{$att}['data']; default: return $xml->weather->forecast_information->{$att}['data']; } } function img($url,$width=35,$title) { //return '<img src="http://www.google.com/'.$url.'"/>'; $name = substr($url,strrpos($url,'/')+1,-4); $images = array( 'cloudy' => 'cloudy', 'mostly_cloudy' => 'partly_cloudy', 'mostly_sunny' => 'partly_cloudy', 'chance_of_rain' => 'light_rain', 'chance_of_storm'=> 'tstorms', 'mist' => 'light_rain', 'sunny' => 'sun', 'chance_of_snow' => 'light_snow', 'flurries' => 'light_snow' ); $name = isset($images[$name]) ? $images[$name] : $name; $name = $name.'.png'; $url_folder = $width==60 || $width==35 ? $width : 35; return '<img src="http://ssl.gstatic.com/onebox/weather/'.$url_folder.'/'.$name.'" alt="'.$name.'" width="'.$width.'" title="'.$title.'">'; } header('content-type: text/html; charset: utf-8'); $data = file_get_contents('http://www.google.com/ig/api?weather=opava,cz&hl=cs'); $data = iconv("iso-8859-2", "UTF-8", $data ); $xml = simplexml_load_string($data); $loc = str_replace(',',', ',att('city',0)); $date = att('forecast_date',0); $t = '°C'; $html = ' <html> <head> <title>Počasí</title> <style type="text/css"> html, body {margin:0;padding:0;} .f1, .f2 {border-collapse:collapse; border-spacing:0;} .f1 caption {font-weight:bold;text-align:left;} .f1 caption:first-letter {text-transform:uppercase;} .f2 {color:#666;} .f1 .temp {font-size:125%;} .f2 .temp {font-size:85%;} </style> </head> <body> '; $html .= " <table class=\"f1\" summary=\"Aktuální počasí pro ".$loc."\"> <caption>".$loc."</caption> <tr> <td width=\"35\">".img(att('icon',1),35,att('condition',1))."</td> <td><div class=\"temp\">".att('temp_c',1).$t."</div></td> </tr> <tr> <td colspan=\"2\"> <div class=\"wind\">".preg_replace('/\ss.*?rychlostí/',',',att('wind_condition',1))."</div> <div class=\"hum\">" .att('humidity',1)."</div> </td> </tr> </table>"; $html .= " <table class=\"f2\" summary=\"Předpověď počasí\">"; for ($i=0;$i<4;$i++) { $html .= " <tr> <td>".img(att('icon',2,$i),16,att('condition',2,$i))."</td> <td><div class=\"temp\">".att('high',2,$i).$t.', '.att('low',2,$i).$t."</div></td> <td> ".att('day_of_week',2,$i)."</td> </tr>"; } $html .= " </table> </body> </html> "; echo $html; ?> |
||
Re4DeR Profil |
#3 · Zasláno: 2. 3. 2012, 02:18:29
Asi jsi nečetl co jsem psal. Ale děkuji. Už jsem to vyřešil.
Stáhl jsem soubor pomoci file_get_content , nasel a odstranil ten javascript a pak teprve na to pustil simplehtml |
||
Časová prodleva: 11 let
|
0