2016-12-10 5 views
0

Hier ist mein Code Titel Webseite zu packen:XPath-Abfrage nicht auf dieser Website funktioniert

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

Es funktioniert richtig in einigen Websites:
http://www.beytoote.com/news/politics-social/jnews151207.html

Aber nicht in dieser speziellen Web-Seite arbeiten :
http://www.jamnews.ir/detail/News/742550

Wo ist das Problem?

+2

Wie genau soll es funktionieren? –

+0

@RuslanOsmanov Es gibt nur einen Text zurück (der Titel des Seitentiteltags). – mehdirahimi

Antwort

0

Wenn Sie PHP cURL oder file_get_contents verwenden, scheint diese bestimmte Website zu blockieren, die eine Fehlermeldung gibt. Wenn Sie den Benutzer-Agent festlegen, scheint es OK. Auch würde ich es bei Fehlern im HTML durch php-ordentlich laufen lassen.

<?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); 

gibt:

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

Das ist nicht ganz das, was ich will, aber es hat sehr geholfen, Tnx. – mehdirahimi

+0

Haben Sie es jetzt funktioniert oder benötigen Sie weitere Hilfe? –

+0

Ich habe nicht PHP-Tidy verwendet, es ist nicht notwendig, ich benutze nur Curl mit der Einstellung CURLOPT_USERAGENT und es hat gut funktioniert. – mehdirahimi

Verwandte Themen