2017-11-03 1 views
0

Während xpath und nokogiri für das Crawling Seiten verwenden, traf ich einige Probleme mit Auto-Scroll- Die meisten Auto-Scrollen in der Regel einige Arten von Seitenzahlen haben, so dass ich durch Eingabe machen verarbeiten kann.Autoscroll Seite Umgang mit Ruby, nokogiri

Wenn jedoch wie diese Seite, wenn Autoscroll als JS-Funktion existiert, wie kann ich versuchen zu crawlen?

+0

Da Nokogiri ein XML/HTML-Parser ist und kein kopfloser Browser, können Sie die Autoscroll-Option in js nicht ausführen. Sie müssen entweder die in scroll ausgelöste API finden oder einen Vorteil daraus ziehen oder Selen verwenden Fahrer, denke ich. –

Antwort

1

In der Regel, wenn Autoscroll verwendet wird, führt die js-Funktion eine AJAX-Anforderung an den Server aus, um neue Elemente abzurufen. So können Sie einfach den Browser-Inspektor öffnen und prüfen, welche XHR-Anforderungen Sie zum Blättern auf der Seite machen.

Zum Beispiel führt dies juswatch anfordern

https://apis.justwatch.com/content/titles/en_US/popular?body=%7B%22age_certifications%22:null,%22content_types%22:null,%22genres%22:null,%22languages%22:null,%22max_price%22:null,%22min_price%22:null,%22monetization_types%22:%5B%22flatrate%22,%22rent%22,%22buy%22,%22ads%22,%22free%22%5D,%22page%22:2,%22page_size%22:30,%22presentation_types%22:null,%22providers%22:null,%22release_year_from%22:null,%22release_year_until%22:null,%22scoring_filter_types%22:null%7D 

So die ganze Seite zu analysieren, brauchen Sie gar nicht nokogiri. Führen Sie einfach die oben genannten Anforderungen aus, ersetzen Sie jedes Mal den Seitenparameter und parsen Sie den zurückkehrenden json.