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) 

PDF Dokumente stempeln mit PyPDF

Dieses Python Beispiel Script stempelt die erste Seite eines PDF Dokuments mit einer anderen PDF Datei und schreibt das Resultat in eine dritte PDF Datei. Der Stempelvorgang wird durch Überlagerung zweier PDF Dokumente erzeugt.

Achtung: Das Script benötigt das Python Modul PyPDF.

Tipp: Falls der Stempel durchsichtig aufgetragen werden soll, muss der Text der Stempel-PDF-Datei transparent erzeugt worden sein. Die Transparenz kann man in Word z.B. über die Formatierung/Eigenschaften eines Textfelds definieren-bevor der Stempel zu PDF konvertiert und mit diesem Script verwendet wird.

from pyPdf import PdfFileWriter, PdfFileReader

output = PdfFileWriter()
input1 = PdfFileReader(file("C:\\test.pdf", "rb"))

# add page 1 from input1 to output document, unchanged
output.addPage(input1.getPage(0))

# add page 4 from input1, but first add a watermark from another pdf:
page0 = input1.getPage(0)
watermark = PdfFileReader(file("c:\\stamp.pdf", "rb"))
page0.mergePage(watermark.getPage(0))
output.addPage(page0)

outputStream = file("c:\\document-output.pdf", "wb")
output.write(outputStream)
outputStream.close()

PDF zusammenführen/verbinden mit PyPdf

Dieses PyPDF-Beispiel demonstriert, wie zwei PDF Dokumente in einer dritten PDF-Datei zusammengeführt (konkateniert) werden:

 from pyPdf import PdfFileWriter, PdfFileReader  output = PdfFileWriter() input1 = PdfFileReader(file("C:\\test2.pdf", "rb")) input2 = PdfFileReader(file("C:\\GEHEIM2.pdf", "rb"))   for page in range(input1.getNumPages()):     output.addPage(input1.getPage(page))     print 'Added page %s from first file'%page  for page in range(input2.getNumPages()):     output.addPage(input2.getPage(page))     print 'Added page %s from second file'%page      outputStream = file("c:\\document-output.pdf", "wb") output.write(outputStream) outputStream.close()