HTML-Code von Webseiten automatisiert mit Internet Explorer speichern

Hin und wieder möchte man für den einen oder anderen Zweck den HTML-Code von Webseiten abspeichern. Sicher könnte man hierfür den Quellcode jeder einzelnen Seite mit dem Webbrowser anzeigen und den Inhalt in eine separate Datei abspeichern – oder noch einfacher im Menü "Speichern" aufrufen.

Praktischer ist es aber, insbesondere für viele URLs/Webseiten, es automatisiert von Python erledigen zu lassen. Das folgende Python Script automatisiert den Microsoft Internet Explorer und holt vollautomatisch den Quellcode einer angegebenen URL:

 # This example need ActivePython or any other Python distribution # with the Pywin32 module from Marc Hammond from win32com.client import Dispatch from time import sleep def download_url(url):     """     Note: IE internally formats all HTML to stupid mixed-case, no-     quotes-around-attributes syntax. So if you are planning to parse     the data, make sure you study the output of this function rather     than looking at View-source alone.     """     ie = Dispatch("InternetExplorer.Application")     ie.Visible = 1      ie.Navigate(url)     #it takes a little while for page to load     if ie.Busy:     sleep(2)     #now, we got the page loaded and DOM is filled up - so get the text     text = ie.Document.body.innerHTML     #text is in unicode, so get it into a string     text = unicode(text)     text = text.encode('ascii','ignore')     print text     ie.Quit()     return text  download_url('http://www.heise.de')

Statt „print text“ könnte man an der Stelle gleich den Inhalt in eine Datei schreiben.

Aus Internet Explorer automatisiert drucken

 # IE COM Example # print without prompting the user with printer dialog  from win32com.client.gencache import EnsureDispatch from time import sleep import win32com ie = EnsureDispatch("InternetExplorer.Application") ie.Visible = 1 ie.Navigate("http://www.heise.de") if ie.Busy:  sleep(2) # print the current IE document without prompting the user for the printer dialog  ie.ExecWB(win32com.client.constants.OLECMDID_PRINT, \     win32com.client.constants.OLECMDEXECOPT_DONTPROMPTUSER)