Zum Hauptinhalt springen

PDF-Download- und Metadaten-Scan-Werkzeug

Dieses Repository enthält ein Python-Werkzeug, das alle PDFs einer Webseite herunterlädt und ihre Metadaten ausliest. Die Metadaten werden in eine CSV-Datei geschrieben.

Nur für Testzwecke

Dieses Werkzeug ist ausschließlich für Ausbildung und autorisierte Penetrationstests gedacht. Es gegen Systeme einzusetzen, für die du keine ausdrückliche Testerlaubnis hast, ist strafbar und unethisch.

Inhalt

Funktionen

Dieses Werkzeug bietet:

  • PDFs herunterladen: lädt automatisch alle PDFs einer Webseite herunter.
  • Metadaten auslesen: liest aus jedem PDF folgende Felder:
    • Title
    • Author
    • Creator
    • Created (Erstellungsdatum)
    • Modified (Änderungsdatum)
    • Subject
    • Keywords
    • Description
    • Producer
    • PDF Version
  • In CSV speichern: schreibt die Metadaten in eine CSV, eine Zeile pro PDF.

Loslegen

Voraussetzungen

Vor dem Ausführen muss installiert sein:

  • Python 3.7 oder höher
  • Python-Bibliotheken:
    • requests
    • beautifulsoup4
    • PyPDF2

Installieren mit pip:

pip install requests beautifulsoup4 PyPDF2

Installation

Repository klonen:

git clone https://github.com/yourusername/metascan.git
cd metascan

Benutzung

Das Werkzeug läuft über die Kommandozeile und bietet ein paar Optionen.

Kommandozeilen-Optionen

OptionBeschreibungPflicht
-uURL der Webseite, die nach PDFs durchsucht wirdx
-nName der Ausgabe-CSVx

Beispiele

PDFs von einer Webseite herunterladen und Metadaten auslesen

python metascan.py -u https://example.com -n output.csv
  • Dieser Befehl durchsucht https://example.com nach PDFs, lädt sie herunter und schreibt ihre Metadaten in output.csv.

Anderen Ausgabedateinamen angeben

python metascan.py -u https://example.com -n my_metadata.csv
  • Speichert die Metadaten in my_metadata.csv statt in die Standarddatei output.csv.

Ausgabe-CSV

Die Ausgabe-CSV enthält die Metadaten je PDF in strukturierter Form. Jede Zeile steht für ein PDF, mit diesen Feldern (Spalten):

Beispielausgabe

Die vom Werkzeug erzeugte CSV sieht aus wie die Tabelle unten, mit Semikolon (;) als Trennzeichen:

TitleAuthorCreatorCreatedModifiedSubjectKeywordsDescriptionProducerPDF Version
Sample PDFJohn DoePDF Tool2022-01-012022-01-05ReportDataSample fileAdobe1.7
Example DocJane RoePDFGen2023-05-032023-05-10InvoiceBillingInvoice fileLibreOffice1.6
Test PDFNoneNone2020-12-122020-12-13ManualNoneUser manualFoxit1.4
Report 2022Mark SmithReportGen2022-02-152022-02-16AnnualReportYearly ReportAdobe1.7

Die Einträge in der CSV sind durch Semikolon (;) getrennt.

Fehlerbehandlung

Lässt sich ein PDF nicht lesen oder sind die Metadaten unvollständig, protokolliert das Werkzeug den Fehler und macht mit der nächsten Datei weiter, ohne den ganzen Vorgang abzubrechen. Im Terminal erscheint zudem eine Meldung, welche Dateien Probleme hatten.

Beispiel für eine Fehlermeldung:

Error reading metadata from pdf_downloads/document.pdf: EOF marker not found

Repository: https://github.com/PascalNehlsen/dso-python-tasks/tree/main/module-5/metascan