2016-12-10 66 views
0

這裏是我的代碼獲取網站的標題:的XPath查詢沒有本網站上的工作

$finder = new DomXPath($doc); 
$title = $finder->query('/html/head/title')->item(0)->textContent; 
die($title); 

這在一些網站上正常工作:
http://www.beytoote.com/news/politics-social/jnews151207.html

但在這個特定的網頁無法正常工作:
http://www.jamnews.ir/detail/News/742550

問題在哪裏?

+2

是它究竟應該如何制定? –

+0

@RuslanOsmanov它只是返回一個文本(頁面標題標籤的文本)。 – mehdirahimi

回答

0

如果您使用php cURL或file_get_contents這個特定的網站似乎阻止它給出錯誤消息。如果你設置用戶代理,它似乎是確定的。另外,我會通過php-tidy在HTML中出現錯誤的情況下運行它。

<?php 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, 'http://www.jamnews.ir/detail/News/742550'); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13'); 
$source = curl_exec($ch); 
$config = array(
      'indent'   => true, 
      'output-xhtml' => true, 
      'force-output' => true, 
      'wrap'   => 200); 

$tidy = new tidy; 
$tidy->parseString($source, $config, 'utf8'); 
$tidy->cleanRepair(); 
$doc = new DOMDocument(); 
$doc->loadHTML($tidy); 
$finder = new DomXPath($doc); 
$title = $finder->query('/html/head/title')->item(0)->textContent; 
die($title); 

給出:

جام نیوز :: JamNews - اجازه عربستان به اسرائیل برای حمله به ایران 
+0

這不是我想要的,但它非常有幫助,Tnx。 – mehdirahimi

+0

你現在工作還是需要進一步幫助? –

+0

我沒有使用php-tidy,沒有必要,我只是使用curl來設置CURLOPT_USERAGENT,它運行良好。 – mehdirahimi