Heim  >  Artikel  >  Backend-Entwicklung  >  Konvertieren Sie vom Python-Crawler erfasste Daten in PDF

Konvertieren Sie vom Python-Crawler erfasste Daten in PDF

Y2J
Y2JOriginal
2017-05-08 16:56:051792Durchsuche

In diesem Artikel erfahren Sie, wie Sie mit dem Python-Crawler das „Python-Tutorial von Liao Python. Es gibt so viele Crawler-Tools, die von der Python-Community bereitgestellt werden, dass Sie mit verschiedenen Bibliotheken, die direkt verwendet werden können, in wenigen Minuten einen Crawler schreiben können Liao Xuefengs Python-Tutorial. Erstellen Sie ein PDF-E-Book, das jeder offline lesen kann.

Bevor wir mit dem Schreiben eines Crawlers beginnen, analysieren wir zunächst die Seitenstruktur von Website 1. Die linke Seite der Webseite ist die Verzeichnisstruktur des Tutorials. Jede URL entspricht einem Artikel auf der rechten Seite Auf der rechten Seite befindet sich der Titel des Artikels. In der Mitte befindet sich der Textteil des Artikels. Der Textinhalt steht im Mittelpunkt unseres Interesses. Die Daten, die wir crawlen möchten, sind der Textteil aller Webseiten. Unten befindet sich der Kommentarbereich des Benutzers , der Kommentarbereich ist für uns nutzlos und kann daher ignoriert werden.

Tool-Vorbereitung

Nachdem Sie die Grundstruktur der Website herausgefunden haben, können Sie mit der Vorbereitung der Toolkits beginnen, auf die der Crawler angewiesen ist An. Anfragen und beaut

wenn

ulsoup zwei Artefakte von Crawlern sind, wird reuqests für Netzwerkanfragen verwendet und beautifusoup wird zum Betreiben von HTML-Daten verwendet. Mit diesen beiden Shuttles können wir unsere Arbeit schnell erledigen. Der Einsatz in kleinen Programmen ist wie das Töten eines Huhns mit einem Vorschlaghammer. Da Sie außerdem HTML-Dateien in PDF konvertieren, müssen Sie auch über entsprechende Bibliotheksunterstützung verfügen.topdf ist ein sehr gutes Tool, das zum Konvertieren von HTML in PDF auf mehreren Plattformen verwendet werden kann das Python-Paket von wkhtmltopdf. Zuerst installierendie folgenden Abhängigkeitspakete,dann wkhtmltopdf installieren

wkhtmltopdf installieren

pip install requests
pip install beautifulsoup
pip install pdfkit

Windows-Plattform direkt herunterladen Laden Sie die stabile Version von wkhtmltopdf von der offiziellen Website 2 herunter und installieren Sie sie. Nachdem die Installation abgeschlossen ist, fügen Sie den Ausführungspfad des Programms zur Systemumgebungsvariable $PATH hinzu, andernfalls kann pdfkit wkhtmltopdf nicht finden und der Fehler „Nein“ wird angezeigt „Ausführbare Datei „wkhtmltopdf gefunden““ wird angezeigt. Ubuntu und CentOS können direkt über die Befehlszeile installiert werden

Crawler-Implementierung

$ sudo apt-get install wkhtmltopdf # ubuntu
$ sudo yum intsall wkhtmltopdf   # centos

Wenn alles fertig ist, können Sie mit dem Codieren beginnen, aber Sie sollten es zuerst organisieren Bevor Sie den Code schreiben, denken Sie einen Moment nach. Der Zweck des Programms besteht darin, die allen URLs entsprechenden HTML-Textteile lokal zu speichern und diese Dateien dann mit pdfkit in eine PDF-Datei zu konvertieren. Teilen wir die Aufgabe auf. Speichern Sie zunächst den einer bestimmten URL entsprechenden HTML-Text lokal, suchen Sie dann alle URLs und führen Sie den gleichen Vorgang aus. Verwenden Sie den Chrome-Browser, um das Tag im Hauptteil der Seite zu suchen, und drücken Sie F12, um das p-Tag zu finden, das dem Hauptteil entspricht:

, wobei p der Hauptinhalt der Webseite ist. Nachdem Sie Anforderungen zum lokalen Laden der gesamten Seite verwendet haben, können Sie mit beautifulsoup das HTML-Dom-Element bedienen, um den Textinhalt zu extrahieren.

05ff9a9e18a7aecf8acff32163179ec7Der spezifische Implementierungscode lautet wie folgt: Verwenden Sie die Funktion „soup.find_all“

, um das Body-Tag zu finden, und speichern Sie dann den Inhalt des Body-Teils in a .html-Datei.
Der zweite Schritt besteht darin, alle URLs auf der linken Seite der Seite zu analysieren. Verwenden Sie dieselbe Methode, um die linke Menübezeichnung zu finden

def parse_url_to_html(url):
  response = requests.get(url)
  soup = BeautifulSoup(response.content, "html5lib")
  body = soup.find_all(class_="x-wiki-content")[0]
  html = str(body)
  with open("a.html", 'wb') as f:
    f.write(html)

818516a2aea8c5412fd444e4ed52d34a

Die spezifische Code-Implementierungslogik: Da es zwei Klassen für UK-Nav und UK-Nav-Side gibt Seite

Attribute, und die eigentliche Verzeichnisliste ist die zweite. Alle URLs wurden abgerufen und im ersten Schritt wurde die Funktion zum Konvertieren von URLs in HTML geschrieben.

Der letzte Schritt besteht darin, das HTML in eine PDF-Datei zu konvertieren. Das Konvertieren in eine PDF-Datei ist sehr einfach, da pdfkit die gesamte Logik gekapselt hat. Sie müssen nur die Funktion pdfkit.from_file

def get_url_list():
  """
  获取所有URL目录列表
  """
  response = requests.get("http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000")
  soup = BeautifulSoup(response.content, "html5lib")
  menu_tag = soup.find_all(class_="uk-nav uk-nav-side")[1]
  urls = []
  for li in menu_tag.find_all("li"):
    url = "http://www.liaoxuefeng.com" + li.a.get('href')
    urls.append(url)
  return urls
aufrufen, um die Funktion save_pdf auszuführen, und die E-Book-PDF-Datei wird ausgeführt generiert werden. Das Rendering:

def save_pdf(htmls):
  """
  把所有html文件转换成pdf文件
  """
  options = {
    'page-size': 'Letter',
    'encoding': "UTF-8",
    'custom-header': [
      ('Accept-Encoding', 'gzip')
    ]
  }
  pdfkit.from_file(htmls, file_name, options=options)

Zusammenfassung

Die gesamte Codemenge beträgt weniger als 50 Zeilen, aber warten Sie Tatsächlich wurde der oben angegebene Code weggelassen. Einige Details, z. B. wie der Titel des Artikels abgerufen wird, verwenden das img-Tag des Textinhalts, wenn Sie das Bild normalerweise anzeigen möchten PDF müssen Sie den relativen Pfad in einen absoluten Pfad ändern und die heruntergeladenen temporären HTML-Dateien

löschen

speichern. Diese Details werden alle auf Github veröffentlicht. 【Verwandte Empfehlungen】

1. Kostenloses Python-Video-Tutorial

2. Python-Objektorientiertes Video-Tutorial

3. Python-Lernhandbuch

Das obige ist der detaillierte Inhalt vonKonvertieren Sie vom Python-Crawler erfasste Daten in PDF. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn