2017-08-12 65 views
1

我需要用PHP來刮這個HTML頁面加載的值...Scaping IFrame的HTML頁面使用Ajax請求

http://www.cittadellasalute.to.it/index.php?option=com_content&view=article&id=6786:situazione-pazienti-in-pronto-soccorso&catid=165:pronto-soccorso&Itemid=372 

裏面......我需要提取的數字爲行「二隊」, 「Giallo」,Verde「和」Bianco「(請注意,這些數字是動態的,因此它們可以在刷新頁面時進行更改,但這並不重要....)。

我已經看到這些行是在一些IFrame中(例如... http://listeps.cittadellasalute.to.it/?id=01090201),並使用ajax請求加載值(例如http://listeps.cittadellasalute.to.it/gtotal.php?id=01090101)。

是否有一些解決方案直接刮(我想避免解析奇異的jsons ....),這些值從原始的HTML頁面使用PHP和$ xpath-> query?

建議/例子?

回答

1

我認爲問題是這些值不在原始頁面中,它們是在頁面加載後生成的。所以你需要使用一些能夠兌現所有Javascript功能的東西(比如Selinium webdriver),這對你想做的事情有點矯枉過正(我認爲)。直接處理IFrame更容易。

您可以提取I幀的URL的從原來的網頁...

$url = "http://www.cittadellasalute.to.it/index.php?option=com_content&view=article&id=6786:situazione-pazienti-in-pronto-soccorso&catid=165:pronto-soccorso&Itemid=372"; 
$pageContents = file_get_contents($url); 
$page = simplexml_load_string($pageContents, "SimpleXMLElement", LIBXML_NOERROR | LIBXML_ERR_NONE); 

$ns = $page->getDocNamespaces(); 
$page->registerXPathNamespace('def', array_values($ns)[0]); 
$iframes = $page->xpath("//def:iframe"); 
foreach ($iframes as $frame) { 
    echo "iframe:".$frame['src'].PHP_EOL; 
} 

其中給出(剛纔)

iframe:http://listeps.cittadellasalute.to.it/?id=01090101 
iframe:http://listeps.cittadellasalute.to.it/?id=01090201 
iframe:http://listeps.cittadellasalute.to.it/?id=01090301 
iframe:http://listeps.cittadellasalute.to.it/?id=01090302 

然後,您可以處理這些頁面。

+0

是的,我已經看到IFrames代碼,並且他們使用php(例如http://listeps.cittadellasalute.to.it/gtotal.php?id=01090101)來加載值... I想要避免解析由php調用返回的4個單獨的jsons .....可能它不可能直接做... – Cesare

+0

直接可能的唯一方法就是我會提到的是解釋Javascript。您可能會找到替代方案,但同時您可以解決問題並繼續前進。 –