python urllib2 - warten, bis Seite geladen ist/Umleitung vor Schaben?
Ich bin zu lernen, um web-Schaber und wollen kratzen TripAdvisor für ein persönliches Projekt, greifen die html mit urllib2.
Allerdings bin ich im laufen in ein problem, wo, mit dem nachstehenden code in das html bekomme ich zurück ist nicht korrekt, da die Seite scheint eine zweite Umleitung (Sie können dies überprüfen, durch den Besuch der url) - stattdessen bekomme ich den code aus der Seite, die zunächst kurz angezeigt.
Gibt es einige Verhaltensweisen oder parameter festlegen, um sicherzustellen, dass die Seite komplett fertig geladen/umleiten, bevor man die website-Inhalte?
import urllib2
from bs4 import BeautifulSoup
bostonPage = urllib2.urlopen("http://www.tripadvisor.com/HACSearch?geo=34438#02,1342106684473,rad:S0,sponsors:ABEST_WESTERN,style:Szff_6")
soup = BeautifulSoup(bostonPage)
print soup.prettify()
Edit: Die Antwort ist die Gründliche, aber am Ende, was mein problem gelöst war:
https://stackoverflow.com/a/3210737/1157283
- nicht das urllib einen Fehler auslösen? es ist ein redirectdirector für solche Fälle...
- Kein Fehler, ich bekomme nur die html von der Seite, die kurz angezeigt wird, bevor Sie umgeleitet wird. Ich möchte die html von der Seite, die angezeigt wird, in das Ende. Was ist das redirectdirector, können Sie das noch näher erläutern?
- wenn Ihr mit urlopen, Sie sind mit OpenerDirector.open () - Blick auf die python-docs - leider ist es nicht erklärt, in 2-3 Worten 🙁 : docs.python.org/library/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Inreresting das problem ist nicht, eine Umleitung ist, die Seite ändert den Inhalt mit javascript, aber
urllib2
nichtJS
Motor nurGETS
Daten, wenn Sie Sie deaktiviert haben javascript in Ihrem browser, Sie werden feststellen, es lädt im Grunde den gleichen Inhalt wie das, wasurllib2
gibttest.html
und deaktivieren von JS in Ihrem browser, am einfachsten im firefox Inhalte -> deaktivieren Sie javascript aktivieren, erzeugt das identische Ergebnis-sets.Also, was können wir tun, gut, zuerst sollten wir überprüfen, ob die Seite bietet eine API, die Abwrackprämie neigt dazu, sein Stirnrunzeln bis
http://www.tripadvisor.com/help/what_type_of_tripadvisor_content_is_available
Reise - /Hotel-API?
es sieht Sie möglicherweise, wenn auch mit einigen Einschränkungen.
Aber wenn wir noch brauchen, um zu kratzen, mit JS, dann können wir
selenium
http://seleniumhq.org/ die vor allem für die Tests verwendet, aber die einfache Bedienung und hat eine ziemlich gute docs.Ich fand auch diese Scraping von websites mit Javascript aktiviert? und diese http://grep.codeconsult.ch/2007/02/24/crowbar-scrape-javascript-generated-pages-via-gecko-and-rest/
hoffe, das hilft.
Als Anmerkung: