'Refresh a local web page using Python
I'm using Python to gather some information, construct a very simple html page, save it locally and display the page in my browser using webbrowser.open('file:///c:/testfile.html'). I check for new information every minute. If the information changes, I rewrite the local html file and would like to reload the displayed page.
The problem is that webbrowser.open opens a new tab in my browser every time I run it. How do I refresh the page rather than reopen it? I tried new=0, new=1 and new=2, but all do the same thing. Using controller() doesn't work any better.
I suppose I could add something like < META HTTP-EQUIV="refresh" CONTENT="60" > to the < head > section of the html page to trigger a refresh every minute whether or not the content changed, but would prefer finding a better way.
Exact time interval is not important.
Python 2.7.2, chrome 26.0.1410.64 m, Windows 7 64.
Solution 1:[1]
If you're going to need a refresh on the same tab, you'll need selenium webdriver.
After installing selenium using pip
, you can use the following code :
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()
This will open the URL and refresh the tab every refreshrate
seconds
Solution 2:[2]
I use pyautogui module to refresh the browser page. It's one liner:
import pyautogui
pyautogui.hotkey('f5') #Simulates F5 key press = page refresh
Solution 3:[3]
Keep it very short, as simple as:
from selenium import webdriver
import time
driver = webdriver.Firefox()
driver.get('URL')
while True:
time.sleep(20)
driver.refresh()
driver.quit()
Solution 4:[4]
It looks like several people have asked this in the past but here is a link that sums it up.
But webbrowser.open( url, new=0 ) should open the page in the current window and not initialize a new one.
Solution 5:[5]
The LivePage extension for Chrome. You can write to a file, then LivePage will monitor it for you. You can also optionally refresh on imported content like CSS. Chrome will require that you grant permissions on local file:// urls.
(I'm unaffiliated with the project.)
Solution 6:[6]
Or, you can use the easy auto refresh extension in chrome :D
It allows you to set your own refresh time, fastest being one second!
Solution 7:[7]
I have had same issues as you for some reason new=1 , new=0 doesn't work. U may try the code below. It simply open the url, waits for 10 sec then kill the process n repeat.
from subprocess import Popen
import time
while True:
link = ('https://www.google.com/')
Popen(['start', 'chrome', link], shell=True)
time.sleep(10)
Popen('taskkill /F /IM chrome.exe', shell=True)
Solution 8:[8]
After using pip install to install pyautogui use the following:
import pyautogui
import time
for i in range(number of times you want to refresh):
time.sleep(refreshrate in seconds)
pyautogui.hotkey('f5')
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | Tonechas |
Solution 2 | StockB |
Solution 3 | uzdisral |
Solution 4 | Community |
Solution 5 | Reece |
Solution 6 | Aj463 |
Solution 7 | sharveen |
Solution 8 | PaoloChreif |