2013-05-06 5 views
7

Używam Pythona do zbierania informacji, konstruowania bardzo prostej strony html, zapisywania jej lokalnie i wyświetlania strony w przeglądarce przy użyciu przeglądarki webbrowser.open ('file: /// c: /testfile.html "). Co minutę sprawdzam nowe informacje. Jeśli informacje ulegną zmianie, przepisuję lokalny plik HTML i chcę ponownie załadować wyświetloną stronę.Odświeżanie lokalnej strony internetowej przy użyciu Pythona

Problem polega na tym, że za każdym uruchomieniem przeglądarki webbrowser.open otwiera nową kartę w mojej przeglądarce. Jak odświeżyć stronę, a nie ponownie ją otworzyć? Próbowałem nowe = 0, nowe = 1 i nowe = 2, ale wszystkie robią to samo. Używanie kontrolera() nie działa lepiej.

Przypuszczam, że mógł dodać coś takiego < meta http-equiv = „refresh” content = „60”> do < head> sekcji strony html, aby wywołać odświeżyć co minutę czy treść została zmieniona, ale wolałbym znaleźć lepszy sposób.

Dokładny interwał czasowy nie jest ważny.

Python 2.7.2, chrom 26.0.1410.64 m, Windows 7 64.

+0

Ale dlaczego yo zrobić w ten sposób? Dlaczego nie robisz AJAX lub podobnego, aby przeczytać fragment danych i parsować w przeglądarce? z jQuery jest prosty i nie musi zawsze odnawiać strony internetowej, wystarczy utworzyć plik, a następnie pokazać go za pomocą JQuery – ManuParra

+0

W jaki sposób AJAX i jQuery są łatwiejsze niż dodanie do wygenerowanego pliku html, otwierając go raz za pomocą przeglądarki sieciowej, a następnie pozwalając mu odświeżyć się co minutę (czytając stary plik lub nowo wygenerowany)? – foosion

Odpowiedz

0

Wygląda na to kilka osób pytało w przeszłości, ale tutaj jest link, który podsumowuje.

Python refresh HTML document

Ale webbrowser.open (url, new = 0) należy otworzyć stronę w bieżącym oknie i nie zainicjować nową.

+0

new = 0 powinno działać, ale nie jest, przynajmniej nie dla tego plakatu lub dla mnie, jako wzmianka w moim pytaniu. Ten link zaleca javascript, co wydaje się przesadą. Meta-refresh wydaje się najlepszą alternatywą? – foosion

2

Jeśli potrzebujesz odświeżyć na tej samej karcie, będziesz potrzebować webmaster selenium. Po zainstalowaniu selen użyciu pip można użyć następującego kodu

from selenium import webdriver 
import time 
import urllib 
import urllib2 

x=raw_input("Enter the URL") 
refreshrate=raw_input("Enter the number of seconds") 
refreshrate=int(refreshrate) 
driver = webdriver.Firefox() 
driver.get("http://"+x) 
while True: 
    time.sleep(refreshrate) 
    driver.refresh() 

Spowoduje to otwarcie url i odśwież Tab co refreshrate sekund