2013-06-01 72 views
0
<?php 
include('../simple_html_dom.php'); 

$fname = "http://www.myurl.com"; 

$html = file_get_html($fname); 

$divs = $html->find('h6'); 
foreach($divs as $element) 
{ 
$title = $element->find('a', 0)->plaintext; 
echo $title.'<br>'; 
} 
echo '<br>'; 
?> 

我得到這個錯誤:簡單的HTML DOM URL長度誤差

"failed to open stream: HTTP request failed! HTTP/1.1 500 Internal Server Error in......."

我的網址很長,它的實際長度爲750個字符。 如果我使用wget它顯示「文件名太長」

我該如何解決它?我需要它與簡單的dom一起工作

+0

您的網址是否在合法的瀏覽器中運行? – rixo

+0

是的,它工作的所有瀏覽器...我添加了我的網址請檢查 – user2248737

+0

然後這可能是服務器拒絕服務您的請求,因爲用戶代理或其他。你是否控制這個URL的服務器? – rixo

回答

2

750個字符對於URL長度是可以的。最常用的實際限制是2000個字符,這是較老的IE中的限制。

您應該嘗試模擬發出請求的Web瀏覽器。請參閱this other question

編輯:使用curl與您的代碼

<?php 

// include is not a function, don't use parens (also use require instead) 
require '../simple_html_dom.php'; 

$fname = "http://www.myurl.com"; 

$agent= 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)'; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
// don't want to polute your output 
//curl_setopt($ch, CURLOPT_VERBOSE, true); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_USERAGENT, $agent); 
curl_setopt($ch, CURLOPT_URL, $fname); 
$result=curl_exec($ch); 

$html = new simple_html_dom(); 
$html->load($result); 

$divs = $html->find('h6'); 
foreach($divs as $element) 
{ 
$title = $element->find('a', 0)->plaintext; 
echo $title.'<br>'; 
} 
echo '<br>'; 
+0

你能用我的代碼來解釋嗎...... – user2248737

+1

但是youtubeonfire.com將服務於'file_get_html'。所以沒有必要嘗試這個解決方案... – rixo

+0

謝謝...問題是...該網址更改每個IP鏈接...它與我的本地主機工作正常..不工作與我的另一個Apache服務器相同的鏈接。謝謝你 – user2248737

0

的URL長度是罰款。鏈接可能已損壞或已過期。 我試着用下面顯示的鏈接,結果似乎罰款:

<?php 
include("simple_html_dom.php"); 

$fname = "http://www.youtubeonfire.com/?genre=0&language=0&next_token=rO0ABXNyACdjb20uYW1hem9uLnNkcy5RdWVyeVByb2Nlc3Nvci5Nb3JlVG9rZW7racXLnINNqwMA%0AC0kAFGluaXRpYWxDb25qdW5jdEluZGV4WgAOaXNQYWdlQm91bmRhcnlKAAxsYXN0RW50aXR5SURa%0AAApscnFFbmFibGVkSQAPcXVlcnlDb21wbGV4aXR5SgATcXVlcnlTdHJpbmdDaGVja3N1bUkACnVu%0AaW9uSW5kZXhaAA11c2VRdWVyeUluZGV4TAANY29uc2lzdGVudExTTnQAEkxqYXZhL2xhbmcvU3Ry%0AaW5nO0wAEmxhc3RBdHRyaWJ1dGVWYWx1ZXEAfgABTAAJc29ydE9yZGVydAAvTGNvbS9hbWF6b24v%0Ac2RzL1F1ZXJ5UHJvY2Vzc29yL1F1ZXJ5JFNvcnRPcmRlcjt4cAAAAAEAAAAAAAABds0AAAAAAQAA%0AAAC71ED7AAAAAAFwdAAQMDAwMDAwMDAwMDAwMjAxM35yAC1jb20uYW1hem9uLnNkcy5RdWVyeVBy%0Ab2Nlc3Nvci5RdWVyeSRTb3J0T3JkZXIAAAAAAAAAABIAAHhyAA5qYXZhLmxhbmcuRW51bQAAAAAA%0AAAAAEgAAeHB0AApERVNDRU5ESU5HeA%3D%3D&sort=2"; 

$html = file_get_html($fname); 

$divs = $html->find("h6"); 
foreach($divs as $element) { 
    $title = $element->find("a", 0)->plaintext; 
    echo($title . "<br />"); 
} 
echo("<br />"); 

輸出:

Spider (2013) 
500 MPH STORM 2013 HD 
Van Diemans Land (Action,Adventure,20... 
Good Agent is A Bad Agent (Full HQ En... 
Employee of the Month (Full HQ Englis... 
The Croods (2013) 
GIRLFRIENDS - 2013 
Boys Are Pigs-2013 
The Patriot -2013 
My Daughter&#x27;s Secret -2013 
Dead on Arrival [2013] 
Flght 2013XViD1 
Samsung Galaxy S4 Presentation UNPACK... 
Affinity 2013 
Golden Globe Awards 2013: Full Show 
Parker-2013 
Hells&#x27; Kitchen- New Action Movie 2013 
ALIENS [2013] 
7 Nights Of Darkness -2013 
Hansel And Gretel 2013 
The Collection (2012) 
Mac And Devin Go To High School 2012 
Red Dawn (2012) 
Hijacked -2012 
Bending The Rules -2012 
Inside -2012 
VAMPIRELAND-2012 
Dead Mine -2012 
Devil Seed-2012 
Kill Em All -2012 
One In The Chamber -2012 
The Forger - 2012 
Dark Desire -2012 
A Common Man -2012 . 
The Helpers -2012 
Red Dawn- 2012 720p 

所以,用URL解決這個問題,一切都將工作得很好!

+0

真的嗎?但不能與我的服務器一起工作....另一個鏈接在同一網站上正常工作 – user2248737

+0

仔細檢查您的鏈接。你確定它從瀏覽器正在工作嗎? – gkalpak

0

你說你的網址在你的瀏覽器中工作,而我們這裏所有人都會收到500錯誤,就像你的腳本一樣。

該站點可能檢查URL中的標記與IP以及可能的其他請求標頭。所以你需要找到一種方法從你的PHP腳本中獲得一個標記化的URL。

爲此,您需要先從您的PHP腳本下載主頁,然後找到下一個鏈接的URL並在您的腳本中使用該鏈接。