2012-03-15 87 views
1

我想用php(file_get_contents?)读取一个网站,它隐藏着< span style ='display:none;' >。如何使用PHP从远程网页中提取隐藏的内容?

4的例子:

  1. ù<跨度风格= '显示:无;' > wsebv < /跨度> <ù> </U > rfahr
  2. Ž<跨度风格= '显示:无;' >Ë<我> </I >我<跨度> < /跨度> NHV < /跨度> <b> </B >öhrdorf
  3. 乙<我> </I >一个<我> </I > b <范围> < /范围> e <i> </i > n < span style ='display:none;' > einhv < /跨度> <ù> </U >伯格
  4. ķ<跨度风格= '显示:无;' > s <i> </i > d < span style ='display:none;' > d < span style ='display:none;' > b < span style ='display:none;' > n < span style ='display:none;' > v <i> </i > b < span style ='display:none;' >ħ<我> </I > gawe < /跨度> <ù> </U > AOI < /跨度> <b> </B > hvws < /跨度> <b> </B > AOIR < /跨度> <b> </b > asud </span > <b> </b > asu </span > <b> </b > irchdorf/Kr。

结果应该是:

  1. Urfahr
  2. Zöhrdorf
  3. 巴本贝格
  4. 基希多夫/氪。为解决这个问题

两种可能的方法(但我不知道如何来实现):
A)删除所有跨度标签与他们的内容
B)通过编程只读可见内容

非常感谢您的帮助!

+0

那么你的两种方法做了什么?显示一些代码 – 2012-03-15 19:57:01

+0

Uwsebvrfahr - 它是否在html?在浏览器中,它看起来像Urfahr?如果是这样,那么它只能被javascript解码(你可以通过在浏览器中禁用Javascript并重新加载页面来检查它)。你需要找到这个JavaScript并分析编码算法。 – heximal 2012-03-15 19:58:35

+0

是的,删除''标签 - 一个简单的正则表达式将会诀窍。 – halfer 2012-03-15 19:59:17

回答

0

风格应用的事实没有区别。到PHP,这只是一堆文本。

尝试:

<?php 
$url = 'http://....'; // URL you're scraping. 
$html = file_get_contents($url); 
$text = strip_tags($html); 
echo "<PRE>$text</PRE>"; 
+0

不幸的是没有。使用下面的代码尝试它,在浏览器输出中搜索“Ergebnisse”的第三次出现,然后查看混淆的行。 <?php $ url =“http://www.fussballoesterreich.at/netzwerk/datenservice/379402779304830775_O~733830065019629299~744933674800963515~0~1.htm”; $ html = file_get_contents($ url); $ text = strip_tags($ html); echo“

$text
”; ?> – tomfly 2012-03-15 20:48:18

1

http://sourceforge.net/projects/simplehtmldom/files/latest/download?source=files

include('simple_html_dom.php'); 

$html = file_get_html('http://www.fussballoesterreich.at/netzwerk/datenservice/379402779304830775_O~733830065019629299~744933674800963515~0~1.htm'); 

$i = 1; 
foreach($html->find('.mannschaft a') as $e) 
{ 
    $x = html_entity_decode($e->innertext, ENT_QUOTES, 'UTF-8'); 
    $x = preg_replace('#<(.*)>#', '', $x); 
    echo $i, '. ', $x, '<br />'; 
    $i++; 
} 

结果:

1. Garsten 
2. S. Valent.ASK 
3. Bumgartenberg 
4. Neuhofen/Krems 
5. Admira 
6. Asten 
7. Enns 
8. Pasching 1b 
9. S. Florian 1b 
10. SValentin SC 
11. Hörsching 
12. S Ulrich 
13. Wdischgarsten 
14. Doppl-Hart 

我在这里的工作已经完成。

+0

我的杯子流了下来。 – Pateman 2012-03-15 21:55:44

+0

谢谢你的帮助!这是一个很好的解决方案,但在使用嵌套跨度时不起作用! – tomfly 2012-03-16 18:48:34

+0

@tomfly,我更新了代码,现在查看它。 – 2012-03-17 06:25:35