Ich bin interessiert an Datenanalyse von here. Aber anders als die Standardseite kann ich parse
entweder die older
oder newer
Daten nicht, da es keine Änderung in url
Adresse gibt. Wie gehe ich vor, um andere Daten als die auf der Standardseite zu erhalten? Ich habe lange versucht, eine Lösung zu finden, würde wirklich jede Hilfe zu schätzen wissen. Ich verwende python 3.6
mit lxml
und requests
für urls
Daten analysieren, wenn sich die URL nicht ändert (Paginierung)
Antwort
Wie die Website funktioniert:
Wenn die Seite geladen wird, ist es mit den aktuellen Daten innerhalb des HTML lädt. Jedes Mal, wenn older
oder newer
in der Paginierung klicken, macht es eine GET
Anforderung an diese url:
https://markets.ft.com/data/world/ajax/getnextecoevents?rowId=79519&scrollForward=true&filter=%7B%22keyword%22%3A%22%22%2C%22impact%22%3A%22%22%2C%22countries%22%3A%5B%5D%7D`
Beachten Sie die URL-Parameter:
rowId, scrollForward, filter
Lösung:
Gestalte individuelle Anfragen zu der obigen URL, aber dekrementieren oder inkrementieren Sie einfach den Parameter rowId
, um durch die Seiten zu blättern.
Zum Beispiel:
GET https://markets.ft.com/data/world/ajax/getnextecoevents?rowId=79519
GET https://markets.ft.com/data/world/ajax/getnextecoevents?rowId=79520
GET https://markets.ft.com/data/world/ajax/getnextecoevents?rowId=79521
großartig! Danke vielmals. Kannst du mir mitteilen, wo genau du diese Adresse gefunden hast? Ich habe einen Blick unter den Netzwerk-Tab (unter inspect Elemente), aber ich kann es nicht finden –
Ja sicher. Beobachten Sie den Netzwerk-Tab und drücken Sie 'älter' oder' neuer', um die GET-Anfrage auszulösen. Es sollte unter dem 'XHR' Filter erscheinen (oder einfach' All' filtern). – Acidic
hab es geschafft! Danke –
Basierend Parsen auf die Entwickler-Tools Netzwerkanforderungen anzeigen, können Sie sehen, dass, wenn Sie ein neues Datum auf der Standardseite auswählen, wird die folgende GET-Anfrage gemacht:
Basis-URL:
https://markets.ft.com/data/world/ajax/getnextecoevents?
Abfrageparameter (Sie werden den Filter dict müssen urlencode)
startDate=2017-09-04&filter={"keyword":"","impact":"","countries":[]}
Stellen Sie einfach eine Anfrage für das von Ihnen benötigte Datum und verwenden Sie urllib, um die verbleibenden Filterparameter zu codieren. Dies sollte dir helfen, was du brauchst.
- 1. Wert im Wörterbuch ändert sich, wenn sich die Variable ändert
- 2. Wird ein Ereignis ausgelöst, wenn sich die URL ändert
- 3. .htaccess-URL ändert sich, wenn aus nicht www Zugriff
- 4. Variable ändert sich nicht, wenn sich eine Ansicht ändert
- 5. RedirectToAction ändert nicht die URL
- 6. $ state.go ändert nicht die URL
- 7. Daten speichern, wenn sich die ViewPager-Seite ändert
- 8. Registerkarte wechselt nicht, aber die URL dieser Registerkarte ändert sich
- 9. Django-Vorlagen werden nicht geladen, obwohl sich die URL ändert
- 10. URL Änderungen, aber die Ansicht ändert sich nicht
- 11. URL Neuschreiben - URL ändert sich nicht im Browser
- 12. Clear Balkenanzeige, wenn sich die Option ändert
- 13. Wie ändert man die Stile, wenn sich die Route ändert?
- 14. Das Etikett ändert sich nicht, wenn sich die Sprache ändert, während die App läuft.
- 15. AngularJS aktualisiert die Vorlagenvariable nicht, wenn sich der Bereich ändert
- 16. Mithril-Komponente wird nicht aktualisiert, wenn sich die Route ändert
- 17. Socket wird nicht getrennt, wenn sich die Konnektivität ändert
- 18. Klicken Sie auf den Link ändert sich die URL, aber nicht den Inhalt/Daten auf Seite
- 19. Klasse zu Körper hinzufügen, wenn sich URL mit Jquery ändert?
- 20. Benachrichtigen, wenn sich die Datenbank ändert
- 21. Tabellen transformieren, wenn sich die Bildschirmgröße ändert
- 22. Die Bildlaufansicht ändert sich nicht, wenn sich der Inhalt der untergeordneten Ansicht ändert
- 23. Größe der Containeransicht ändert sich nicht, wenn sich die Ansichtshöhenbeschränkung des Embedded Controllers ändert
- 24. Anchor Elementfarbe ändert sich nicht, wenn
- 25. RedirectToAction ändert die URL
- 26. DatePicker.SelectedDate ändert sich nicht, wenn Texteingabe ist
- 27. border-bottom ändert sich nicht, wenn aktiv
- 28. Sitzungszahlung ändert sich nicht
- 29. was bewirkt, dass sich die URL bei Formulareinreichungen ändert
- 30. Fensterbreite ändert sich, wenn 1 Element die Größe ändert?
Blick auf die Chromkonsole unter dem 'Netz 'Tab und klicken Sie auf' older' oder 'newer' und beobachten, welche Anforderungen gestellt werden. Es könnte helfen? – Acidic
Immer, wenn Sie auf Neu klicken, heißt diese URL. Ändern Sie rowId jedes Mal, wenn Sie neue Daten benötigen. https://markets.ft.com/data/world/ajax/getnextecoevents?rowId=79501&scrollForward=true&filter=%7B% 22Keyword% 22% 3A% 22% 22% 2C% 22Schwäche% 22% 3A% 22% 22% 2C% 22Länder% 22% 3A% 5B% 5D% 7D – MMRahman