W mojej aplikacji Pythona muszę przeczytać wiele stron internetowych, aby zebrać dane. Aby zmniejszyć liczbę wywołań http, chciałbym pobrać tylko zmienione strony. Mój problem polega na tym, że mój kod zawsze mówi mi, że strony zostały zmienione (kod 200), ale w rzeczywistości tak nie jest.wykryć, czy strona internetowa została zmieniona
To jest mój kod:
from models import mytab
import re
import urllib2
from wsgiref.handlers import format_date_time
from datetime import datetime
from time import mktime
def url_change():
urls = mytab.objects.all()
# this is some urls:
# http://www.venere.com/it/pensioni/venezia/pensione-palazzo-guardi/#reviews
# http://www.zoover.it/italia/sardegna/cala-gonone/san-francisco/hotel
# http://www.orbitz.com/hotel/Italy/Venice/Palazzo_Guardi.h161844/#reviews
# http://it.hotels.com/ho292636/casa-del-miele-susegana-italia/
# http://www.expedia.it/Venezia-Hotel-Palazzo-Guardi.h1040663.Hotel-Information#reviews
# ...
for url in urls:
request = urllib2.Request(url.url)
if url.last_date == None:
now = datetime.now()
stamp = mktime(now.timetuple())
url.last_date = format_date_time(stamp)
url.save()
request.add_header("If-Modified-Since", url.last_date)
try:
response = urllib2.urlopen(request) # Make the request
# some actions
now = datetime.now()
stamp = mktime(now.timetuple())
url.last_date = format_date_time(stamp)
url.save()
except urllib2.HTTPError, err:
if err.code == 304:
print "nothing...."
else:
print "Error code:", err.code
pass
ja nie rozumiem, co poszło nie tak. Czy ktoś może mi pomóc?
Czy wziął pod uwagę fakt, że strona internetowa może zawierać informacje dotyczące dat? –
@ księżniczka-wszechświata Nie, nie zastanawiałem się nad tym. Co więc można zrobić, aby sprawdzić, czy strona się zmieniła? Próbowałem również z "hash", ale strona zmienia się przy każdym załadowaniu. – RoverDar