Ich möchte Lulu webstore verschrotten. Ich habe folgende Probleme damit.Scrape Daten von JavaScript-gerenderten Website
- Der Inhalt der Website wird dynamisch geladen.
- Die Website, wenn versucht, zuzugreifen, umgeleitet, um die Länderseite auszuwählen.
- Nach der Auswahl des Landes erscheint der Lieferort und wird zur Startseite weitergeleitet.
- Wenn Sie versuchen, die Endseite programmgesteuert zu erreichen, erhalten Sie eine leere Antwort, da der Inhalt dynamisch geladen wird.
Ich habe eine Liste der End-URLs, aus denen ich Daten schaben muss. Betrachten Sie beispielsweise mobile accessories. Jetzt möchte ich
- Holen Sie sich das HTML-Quelle dieser Seite direkt, die dynamisch geladen Land, Ort wählen Popups Umgehung wählen, so dass ich meine Scrapy XPath-Selektoren verwenden können, Daten zu extrahieren.
- Wenn Sie vorschlagen, Selenium, PhantomJS, Ghost oder etwas anderes zu verwenden, um mit dynamischen Inhalten umzugehen, bitte verstehen Sie, dass ich die End-HTML-Quelle wie in einem Webbrowser nach Verarbeitung aller dynamischen Inhalte, die an Scrapy gesendet werden soll.
- Ich habe auch versucht, mit Proxies zu überspringen wählen Sie Land Popup, aber immer noch lädt es und wählen Sie Lieferort.
- Ich habe versucht, Splash zu verwenden, aber es gibt mir die Quelle der Länderauswahlseite zurück.
Gut Dynamic Inhalt bedeuten AJAX Anruf. Holen Sie sich einfach die Struktur der Anfrage, und rufen Sie sie in einer Schleife mit den IDs der Produkte auf. In der Regel benötigen Sie dazu nur das Modul "Anfragen" in Kombination mit "BeautifulSoup". Gleiches gilt für den Standort. –
@Cal Eliacheff Danke für den Kommentar, aber das Problem mit Ihrem Weg ist, dass, selbst wenn ich Anfragen mit Cookies und User-Agenten als auch einen Web-Browser noch die gleiche Antwort bekomme. Ich brauche etwas zwischen Antwort vom Server und Skript, die diesen dynamischen Inhalt verarbeitet und das Endergebnis gibt, damit ich es zum scrapy einziehen kann. – Mani
Sie sollten bei den Anrufen besser aussehen. Der Speicherort wird in dem Cookie gespeichert, den Sie von 'SelectLocation.aspx' erhalten. Zum Beispiel: http: //www.luluwebstore.com/SelectLocation.aspx? Location = 13241 & DeliveryMode = H & ReturnUrl = http: // www.luluwebstore.com? Ermöglichen es Ihnen, die Länderauswahl zu umgehen. Es sieht so aus, als gäbe es nur GET-Anfragen, die in der Regel einfacher zu benutzen sind. IMHO wollen Sie nicht Scrapy für diese Art von Websites verwenden. –