2017-10-18 4 views
0

Ich habe eine Website, die Anmeldung (Authentifizierung) erfordert, die eine Nachrichtenseite hat, die ich alle Kommentare in PDFs konvertieren möchte. Ursprünglich habe ich nur auf jeden Kommentar geklickt und im Firefox-Browser den Ausdruck gewählt und den Kommentar-Stream einfach als PDF gespeichert. Das Problem ist, dass es so viele gibt, also habe ich beschlossen, ein Python-Skript zu schreiben, aber ich habe Probleme. Hier ist mein Code:Wie man Webpage zu pdf in Python wie die Speichern als pdf-Option in Druck

import mechanize 
import pdfkit 
import os 

br = mechanize.Browser() 
br.set_handle_robots(False) 
br.addheaders = [("User-agent","Firefox")] 
sign_in = br.open("www.mysite.com") 

br.select_form(nr = 0) 
br["username"] = "username" 
br["password"] = "password" 
logged_in = br.submit() 

br.open("comments_page") 
all_comment_links = [] 

# Iterate the links 
for link in br.links(): 
    if "comment" in link.url: 
    all_comment_links.append(link) 

for l in all_comment_links: 
    ret = br.open("comments_page").read() 
    pdfkit.from_url(l.url, l.text + ".pdf") 
    # pdfkit.from_string(ret, l.text + ".pdf") 

    file = open(l.text + ".html", "w") 
    file.write(ret) 
    file.close() 

# try from file 
#for f in glob.glob("*.html"): 
# pdfkit.from_file(f, f.replace(".html", ".pdf")) 

Ich versuche, die PDFKit lib zu verwenden, um jede Kommentarseite in PDF zu konvertieren, aber erfolglos geblieben war. Ich habe versucht, die URL (pdfkit.from_url), nur die Zeichenfolge (pdfkit.from_string), und speichern Sie die HTML in eine Datei (pdfkit.from_file), aber kann nicht herausfinden, warum das nicht funktioniert. Soweit ich weiß, funktioniert das mechanisierte Zeug, weil meine HTML-Dateien alle gewünschten Kommentare mit dem richtigen Inhalt enthalten. Ich habe mich nach verschiedenen Ansätzen umgeschaut, aber das ist so weit, wie ich zu dem gekommen bin, was ich will.

Das Skript wirft keine Fehler, es hängt nur mit dem ersten PDF wie es nicht auf die Seite/den Inhalt zugreifen kann. Ich habe es für eine Weile laufen lassen, aber nur die erste pdf-Datei wird erstellt, aber wenn ich versuche, es zu öffnen, sagt es, dass es beschädigt ist. Verwende ich das pdfkit falsch oder sollte ich etwas anderes verwenden, um diese Seiten in pdf umzuwandeln? Danke und jede Hilfe wird geschätzt. Läuft auf Mac OS x.

+1

Überlegen Sie auf Selen zu wechseln. Ich mag Albträume für solche Dinge heutzutage. – pguardiario

+0

@pguardiario endete mit Selen, viel besser. –

Antwort

0

Meine erste Vermutung ist, dass PDFKit keine Sitzung Infos von mechanize erhält so versucht es Seiten hinter Authentifizierung zu verwenden, ohne eingeloggt zu sein.

sollten Sie wahrscheinlich zuerst herunterladen html mit mechanize dann lokal konvertieren.

Da Sie jedoch sagen, Sie erhalten keine Ergebnisse auch aus der Datei, sollten Sie versuchen, interaktive Python-Shell und versuchen, pdfkit auf eine lokale Datei manuell anwenden, sehen Sie, welche Fehler Sie erhalten.

Andere Sache kann sein, dass entweder von pdfkit Eingaben oder Ausgabedateien nicht in dem Verzeichnis sind, von dem Sie vernünftigerweise erwarten könnten, dass sie versuchen sollten, absolute Pfade als Parameter zu versuchen.

Verwandte Themen