I had the great good fortune to get a sweet new oscilloscope for work. An Agilent MSO-X 4104, if I may namedrop and brag a little bit. Four analog channels, sixteen digital channels, 4Gs/sec @ 2GHz. Yeah. Pretty bitchin’. So why is it still a huge pain to get a screen capture for a report?

I open the web portal. I right click the mouse. I click “Save As”. Why go through all that stress?

OK, maybe I exaggerate. All that aside, this is a great use for Python in that it saves you a little time, and we all know that time == money.

import requests
from bs4 import BeautifulSoup

BASE_URL = 'http://10.20.20.91'         # This is the IP address of the scope.
CAPTURE  = '/getImage.asp?inv=false'    # Screen capture URL

r = requests.get(BASE_URL+CAPTURE, stream=True)        # Request new screencap
for img in BeautifulSoup(r.content).find_all('img'):   # Find new screencap
    f_name = img['src'].split('/')[-1]
    target = requests.get(BASE_URL + img['src']).content # Image data
    with open(f_name, 'wb') as f:
        f.write(target).close()    # Grab, save, beer

Time == money. Money == beer. Stay thirsty, my friends.

⤧  Next post A Teaching Moment