2016-07-21 13 views
2

Ich versuche, alle Links von dieser Seite zu erhalten: https://www.supremecourt.uk/cases/search-results.html?q=affidavitFehlende Elemente in getElementsByTagName

mit dem folgenden Code:

libxml_use_internal_errors(true); 

$html = file_get_contents("https://www.supremecourt.uk/cases/search-results.html?q=affidavit"); 

$docs = new domDocument; 

$docs->loadHTML($html); 


$anchors = $docs->getElementsByTagName('a'); 

$links = array(); 

foreach($anchors as $anchor) { 
    echo $links[] = $anchor->getAttribute('href'); 
    echo '<br>'; 
} 

aber die zurückgegebenen Links enthalten keine Links aus den Suchergebnissen . Warum ist das, und wie kann ich es beheben?

+0

Geben Sie die Ausgabe, die Sie erhalten. –

Antwort

1

Die Suchergebnisse auf dieser Website werden von Google CSE über JSONP-Anfrage bereitgestellt und wahrscheinlich (nicht sicher, da ich nie versucht habe, CSE zu "brechen", aber es gibt eine Signatur in Google-Anfrage, sodass diese Aufgabe nicht einfach ist). t erhalten werden von PHP oder von anderen Weisen, die den kopflosen Browser nicht einschließen, der alle JS Sachen tun kann (PhantomJS, CasperJS, Selenium).

+0

Hallo, Roman. Ich benutze Skripte von kostenlosem Hosting, also weiß ich nicht, ob ich kopflose Browser verwenden kann. Ich werde Regex versuchen. Wenn Sie weitere Vorschläge haben, schreiben Sie sie. Vielen Dank. –

+0

@LukaszB Regex kann Ihnen nicht helfen. Sehen Sie sich den Code an (view-source: https: //www semecourt.uk/cases/search-results.html? Q = eidesstattliche Erklärung). Es gibt keine Suchergebnisse. –

+0

@LukaszB Nur etwas recherchiert. Sie können versuchen, https://www.googleapis.com/customsearch/v1element?v=1.0&q=affidavit&key=AIzaSyCVAXiUzRYsML1Pv6RwSG1gunmMikTzQqY&cx=000046730316008719618:zmvytun3c8i anzufragen, um Ergebnisse im JSON-Format zu erhalten. Aber sei vorsichtig, denn ich bin mir ziemlich sicher, dass Google nach einigen Anfragen aus der gleichen IP-Adresse bald CAPTCHA zurückgeben kann. –

Verwandte Themen