2012-07-17 91 views
0

我想檢索網頁的內容,並檢查頁面是否包含我正在監控的某些錯誤關鍵字。 (而不是每次手動加載每個URL來檢查網站,我希望以編程方式執行此操作,並在出現錯誤時標記出錯誤)獲取URL的處理內容

我試過XMLHttpRequest。我能夠獲取HTML內容,就像我在頁面上「查看源代碼」時看到的一樣。但是我監視的頁面在Sharepoint上運行,Web部件是動態生成的。我相信,如果在加載這些部分時發生錯誤,我將無法將它們標記出來,因爲我抽取的HTML不會包含錯誤,而只是通常的Web部件路徑。

cURL似乎也這樣做。我剛剛閱讀了關於DOMDocument的信息,並且想知道DOMDocument是處理代碼還是僅僅將HTML分解爲分層結構。

我只希望擁有該網址的內容。 (就像在IE中將網站保存爲txt時所得到的一樣,而不是HTML)。或者如果我可以進一步處理HTML,那麼它也會很好。我怎樣才能做到這一點?任何幫助將非常感激。 :)

+0

要清楚你想從網絡上刪除HTML標記並獲得唯一剩餘的數據? – Nish 2012-07-17 13:16:44

+0

你好,我希望得到處理後的內容,就像在加載javascript和生成內容之後。不是一個查看源的JavaScript和功能仍然存在,然後剝離他們的標籤。我應該舉個例子來更好地解釋我自己:) – user1531773 2012-07-17 16:23:48

回答

1

爲什麼要剝離HTML?最好使用它!

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); 
$data = curl_exec($ch); 
curl_close($ch); 

// libxml_use_internal_errors(true); 
$oDom = new DomDocument(); 
$oDom->loadHTML($data); 

// Go through DOM and look for error (it's similar if it'd be 
// <p class="error">error message</p> or whatever) 
$errors = $oDom->getElementsByTagName("error"); // or however you get errors 
foreach($errors as $error) { 
    if(strstr($error->nodeValue, 'SOME ERROR')) { 
     echo 'SOME ERROR occurred'; 
    } 
} 

如果你不想做,你可以這樣做:

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); 
$data = curl_exec($ch); 
curl_close($ch); 
if(strstr($data, 'SOME_ERROR')) { 
    echo 'SOME ERROR occurred'; 
} 
+0

Hi Dow!謝謝回答!我相信我必須去掉HTML,因爲我蜷縮在一起的網站是一個SharePoint站點,可能有錯誤的地方將成爲動態內容。查看源未顯示其中的內容。所以如果我的支票是基於這個字符串的話,我認爲我不會發現錯誤。 – user1531773 2012-07-17 16:18:03

+0

查看源文件是不是顯示內容?所以內容是從Javascript生成的?在那種情況下,它會變得更加困難.. – Doa 2012-07-18 08:33:44

+0

erm yes。內容是從Javascript生成的。有什麼方法可以檢索內容嗎? – user1531773 2012-07-18 15:54:34