2013-05-13 73 views
1

我想要什麼來完成可能會有點鐵桿,但我想知道這是否是可能的:PHP-從網站檢索的多個頁面的具體內容

問題:
我的問題是一樣的作爲PHP-Retrieve content from page,但我想在多個頁面上使用它。

局勢:
我正在使用一個關於電視節目的網站。所有電視節目具有相同的URL,然後顯示節目的名稱:
http://bierdopje.com/shows/NAME_OF_SHOW
在每個顯示頁面上,都有一行代碼告訴您節目是取消還是仍在運行。我想要檢索該行以概述取消的演示(該網站僅支持運行演出的概述,因此我想創建一個額外的功能)。

真正的問題:
我怎麼能告訴DOM檢索所有節目和檢查的顯示狀態? (http://bierdopje.com/shows/ *)。

注:
據我所知,因爲它是閱讀整個網站這個過程可能需要一段時間(或者是太多的數據?)。

回答

0

我使用phpquery從網頁獲取數據,如Dom中的jQuery。

例如,把所有節目的列表,你可以這樣做:

<?php 
require_once 'phpQuery/phpQuery/phpQuery.php'; 

$doc = phpQuery::newDocumentHTML(
    file_get_contents('http://www.bierdopje.com/shows') 
); 

foreach (pq('.listing a') as $key => $a) { 

    $url = pq($a)->attr('href'); // will give "/shows/07-ghost" 
    $show = pq($a)->text(); // will give "07 Ghost" 

} 

現在你可以individualy處理所有節目,做一個新的phpQuery :: newDocumentHTML每個節目和與選擇提取物你需要的信息。


獲取的節目

$html = file_get_contents('http://www.bierdopje.com/shows/alcatraz'); 
$doc = phpQuery::newDocumentHTML($html); 

$status = pq('.content>span:nth-child(6)')->text(); 
+0

謝謝您的答覆。這工作得很好。不過,這並不完全是我的意思。我希望檢查網站上的每一個節目(而不是概述)。你說我可以創建一個新的phpQuery :: newDocumentHTML,但這需要太多的工作,因爲有成千上萬的節目。沒有辦法檢查每個節目(每個節目的新網址)嗎? – Tom 2013-05-13 12:34:21

+0

我的示例腳本可以幫助您獲取您需要的每個節目的列表。您可以將結果存儲到一個表格(所有網址)。對不起,要查看每個節目,您需要首先獲取每個節目的html代碼,然後使用pq(選擇器)可以逐個查看節目的狀態。 – k3z 2013-05-13 15:53:39

+0

這不是關於頁面上的節目bierdopje.com/shows,而是顯示哪些沒有列出,如[鏈接](http://www.bierdopje.com/shows/alcatraz)Alcatraz [/ link]。你知道我怎麼能找到他們,得到的網址,然後檢查你的腳本狀態後? – Tom 2013-05-14 11:59:34

1

使用此代碼來獲取只能從單一的網站的鏈接狀態。

include_once('simple_html_dom.php'); 

$html = file_get_html('http://www.couponrani.com/'); 

// Find all links 
foreach($html->find('a') as $element) 
     echo $element->href . '<br>';