2012-03-04 74 views
2

我無法從網頁獲取內容提取內部文本, 其實我想從取div名稱displaybody從特定的div

所有內部文本,但我的代碼似乎並不工作,它爲獲取頁面的所有內容,而不是取出由displaybody格和後4頁成功抓取我得到一個錯誤的內容,

Fatal error: Maximum execution time of 30 seconds exceeded in E:\Installations\xampp\htdocs\wp\simple_html_dom.php on line 127

這裏是腳本代碼,

我想我的劇本打開在代碼中提到的URL裏面所有的子頁面(/ TXT /任意數量),並獲取其特定的div內容(displaybody)

<?php 

    $request_url ='http://www.zedge.net/txts/4519/200-3-1/'; 

    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $request_url);  
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    $result = curl_exec($ch); 

    $regex='/href=\"\/txt\/[0-9].*/'; 
    preg_match_all($regex,$result,$parts); 

    foreach($parts[0] as $link){ 
     $url = 'http://zedge.net' . str_replace ("href=\"",'',$link); 
     echo file_get_html($url)->plaintext; 
     echo "<br /><br/ ><br />"; 
    } 

    curl_close($ch);  
    echo $html->find('displaybody', 0)->innertext;  
?> 
+0

第127行的陳述是什麼? – 2012-03-05 10:32:47

+1

這是默認的簡單的HTML DOM文件,這不是我問的主要問題,順便提一句,第127行的語句是,函數__destruct() {this-> clear(); } – 2012-03-05 11:06:11

回答

2

的錯誤意味着你的腳本時間太長執行,所以它被關閉了。如果抓取頁面需要很長時間並且這沒有問題,則可以禁用或增加最大值。執行時間爲set_time_limit()。如果您懷疑這種情況,您應該測量腳本不同部分的時間,以查看導致腳本掛起的原因,也可能導致您的腳本在單個部分中停留時間過長。

至於你的其他問題,你想從每個單獨的頁面獲得div#displaybody內容?假設URL提取已經工作,我想你可以做到這一點這樣的foreach循環中:

$html = file_get_html($url); 
$displaybody = $html->find('div[id=displaybody]', 0)->plaintext; 
+0

thankyou它是有益的:)順便說一句,你沒有讀完整的問題,我想,我有問題的兩個部分 – 2012-03-04 15:46:05

+0

@受影響我很抱歉,我太匆忙地讀了這個問題,我想。我已經更新了我的答案,以獲取'#displaybody' div的示例。 – 2012-03-06 07:21:53

-1

您可以通過

ini_set('max_execution_time', 0); 

此設置的max_execution_time 0將刪除時間限制。

+0

你沒有回答主要問題:/ – 2012-03-04 16:40:35

+0

這不是他所問的 – 2012-03-05 11:07:58