2017-02-14 1 views
0

Ich versuche npm Anfrage und cheerio zu verwenden, um Webseiten zu ziehen und ihre HTML zu analysieren. Dies funktioniert in Fällen, in denen der HTML-Code auf Anfrage geladen wird. Aber ich habe ein Problem, bei dem die Seite zuerst einen Ladebildschirm lädt und dann die Seite nach einigen Augenblicken mit neuen Informationen/Elementen aktualisiert.npm Anfrage warte vor dem Lesen Körper

Teilcode:

var url = 'website with loading screen prior to content.com'; 
var request = require('request'); 
request(url, function (error, response, body) { 
    if (!error && response.statusCode == 200) { 
    console.log(body) // Show the HTML for the Google homepage. 
    } 
}) 

Was würde Ich mag - Entweder Anfrage für ein bestimmtes Element zu warten, mit der Fähigkeit, auf der Seite zu zeigen, und dann den Körper zu lesen. OR Lage sein, eine feste Anzahl von Sekunden zu warten und dann lesen Sie den Körper

Andere Optionen - Es ist vielleicht nicht möglich sein, mit npm Anfrage, was in Ordnung ist. Wenn das der Fall ist, können Sie mir bitte in die richtige Richtung zeigen. Meine anderen Optionen, die ich in Betracht ziehe, sind webdriver.io oder phantomjs. Gibt es dafür eine empfohlene Vorgehensweise?

Antwort

0

Leider ist es nicht möglich, request auf "Warten" zu konfigurieren, nachdem die Anforderung initiiert wurde, bevor eine Antwort empfangen wird. Das Beste, was Sie tun können, ist PhantomJS. Es ist ein kopfloser Browser, den Sie verwenden können, um die Seite zu laden und zu rendern und dann dynamisch über Javascript auf Inhalte zuzugreifen.

Überprüfen Sie diese answer für ein kurzes Beispiel.

+0

Danke, ich hatte Phantomjs als eine mögliche Option in meiner Frage aufgeführt. Am Ende habe ich es mit großem Erfolg benutzt. –

+1

@alex_milhouse cool. Es ist ein gutes Paket. – jordanwillis

Verwandte Themen