Uczę się tworzyć skrobaczki internetowe i chcę zadrapać serwis TripAdvisor za osobisty projekt, chwytając go za pomocą urllib2. Jednakże mam problem z tym, że przy użyciu poniższego kodu html, który otrzymuję, nie jest poprawny, ponieważ wydaje się, że druga strona zajmuje przekierowanie (możesz to sprawdzić odwiedzając adres URL) - zamiast tego otrzymuję kod ze strony, która początkowo pojawia się na krótko.python urllib2 - poczekaj na zakończenie strony ładowanie/przekierowanie przed skrobaniem?
Czy istnieje pewne zachowanie lub parametr, który należy ustawić, aby upewnić się, że strona została całkowicie załadowana/przekierowana przed uzyskaniem zawartości witryny?
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()
Edycja: Odpowiedź jest dokładny, jednak w końcu co rozwiązać mój problem został w ten sposób: https://stackoverflow.com/a/3210737/1157283
doesnt urllib podnieść błąd? jest taki przekierowanie dla takich przypadków ... –
@DonQuestion Bez błędu, po prostu dostaję kod HTML ze strony, która pojawia się krótko przed przekierowaniem. Chcę html ze strony, która pojawia się na końcu. Co to jest redirectdirector, możesz rozwinąć? – Ken
jeśli używasz urlopen, używasz OpenerDirector.open() spójrz na python-docs - niestety nie jest to wyjaśnione w 2-3 słowach :-(: http://docs.python.org/library/urllib2.html? highlight = urllib2 # urllib2.OpenerDirector –