Mam kawałek kodu Pythona 3, który pobiera stronę internetową co 10 sekund, co przedstawia niektóre informacje JSON:

s = requests.Session()    

while True:
        r = s.get(currenturl)
        data = r.json()
        datetime = data['Timestamp']['DateTime']
        value = data['PV']
        print(str(datetime) + ": " + str(value) + "W")
        time.sleep(10)

Wynik tego kodu to:

2020-10-13T13: 26: 53: 888W

2020-10-13T13: 26: 53: 888W

2020-10-13T13: 26: 53: 888W

2020-10-13T13: 26: 53: 888W

Jak widać, datetime nie zmienia się przy każdej iteracji. Kiedy odświeżam stronę ręcznie w mojej przeglądarce, jest aktualizowany za każdym razem.

Próbowałem dodać

Cache-Control max-age=0

Do nagłówków mojej prośby, ale nie rozwiązuje problemu.

Nawet gdy jawnie nie ustawiasz wszystkiego, po pętli, pozostaje ten sam problem:

while True:
        r = s.get(currenturl, headers={'Cache-Control': 'no-cache'})
        data = r.json()
        datetime = data['Timestamp']['DateTime']
        value = data['PV']
        print(str(datetime) + ": " + str(value) + "W")
        time.sleep(10)
        counter += 1
        r = None
        data = None
        datetime = None
        value = None

Jak mogę "zmusić" odświeżanie strony z żądaniems.get ()?

0
Matthias 13 październik 2020, 14:32

1 odpowiedź

Najlepsza odpowiedź

Okazuje się, że ta konkretna strona nie jest stale odświeżana samodzielnie, chyba że żądanie pochodzi z jego podrzędnego URL.

r = s.get(currenturl, headers={'Referer' : 'https://originalurl.com/example'})

Musiałem dołączyć oryginalny adres URL rodzica jako referencję. Teraz działa zgodnie z oczekiwaniami:

2020-10-13T15: 32: 27: 889W

2020-10-13T15: 32: 37: 889W

2020-10-13T15: 32: 47: 884 W

2020-10-13T15: 32: 57: 884 W

2020-10-13T15: 33: 07: 894W

0
Matthias 13 październik 2020, 13:35