ホームページ  >  記事  >  バックエンド開発  >  Python クローラー実装チュートリアルを PDF 電子書籍に変換

Python クローラー実装チュートリアルを PDF 電子書籍に変換

高洛峰
高洛峰オリジナル
2017-02-21 17:06:151778ブラウズ

この記事では、Python クローラーを使用して「Liao Xuefeng の Python チュートリアル」を PDF に変換する方法とコードを共有します。必要な友人はそれを参照してください。

クローラーを作成するには、Python を使用するより適切な方法はないようです。 、Python コミュニティによって提供されています。 目がくらむほど多くのクローラー ツールがあり、直接使用できるさまざまなライブラリを使用して、数分でクローラーを作成できます。 今日は、Liao Xuefeng の Python チュートリアルをダウンロードしました。誰もがオフラインで読めるように、PDF 電子書籍にしました。

クローラーを書き始める前に、まず Web サイトのページ構造を分析しましょう 1. Web ページの左側はチュートリアルのディレクトリの概要であり、各 URL は右側の記事に対応しています。記事のタイトル、中央は記事のテキスト部分です。クロールしたいデータはすべての Web ページのテキスト部分です。コメント領域はありません。私たちには慣れているので無視して構いません。

python爬虫实现教程转换成 PDF 电子书

ツールの準備

Web サイトの基本構造を理解したら、クローラーが依存するツールキットの準備を開始できます。 request と beautifulsoup はクローラーの 2 つの主要なアーティファクトであり、reuqests はネットワーク リクエストに使用され、Beautifulsoup は HTML データの操作に使用されます。これら 2 つのシャトルを使用すると、scrapy のようなクローラー フレームワークを必要としません。これを小さなプログラムで使用するのは、大ハンマーで鶏を殺すようなものです。さらに、HTML ファイルを PDF に変換するため、対応するライブラリのサポートも必要です。wkhtmltopdf は、複数のプラットフォームに適した HTML を PDF に変換できる非常に優れたツールです。まず、次の依存関係パッケージをインストールします。

次に、wkhtmltopdfをインストールします

pip install requests
pip install beautifulsoup
pip install pdfkit

wkhtmltopdfをインストールします

Windowsプラットフォームは、wkhtmltopdf公式Webサイトから安定版を直接ダウンロードします。 2 インストールが完了したら、実行パスを追加します。プログラムのファイルをシステム環境 $PATH 変数に追加しないと、pdfkit は wkhtmltopdf を見つけることができず、「wkhtmltopdf 実行可能ファイルが見つかりません」というエラーが表示されます。 Ubuntu と CentOS はコマンドラインを使用して直接インストールできます

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

クローラーの実装

すべての準備ができたらコーディングを開始できますが、コードを記述する前に考えを整理する必要があります。このプログラムの目的は、すべての URL に対応する HTML テキスト部分をローカルに保存し、pdfkit を使用してこれらのファイルを PDF ファイルに変換することです。まずタスクを分割して、特定の URL に対応する HTML テキストをローカルに保存し、次にすべての URL を検索して同じ操作を実行します。

Chrome ブラウザを使用してページの本文部分でタグを見つけ、F12 キーを押して本文に対応する p タグを見つけます: 05ff9a9e18a7aecf8acff32163179ec7 (p は本文の内容)ウェブページの。リクエストを使用してページ全体をローカルにロードした後、 beautifulsoup を使用して HTML dom 要素を操作し、テキスト コンテンツを抽出できます。 05ff9a9e18a7aecf8acff32163179ec7,该 p 是网页的正文内容。用 requests 把整个页面加载到本地后,就可以使用 beautifulsoup 操作 HTML 的 dom 元素 来提取正文内容了。

python爬虫实现教程转换成 PDF 电子书
具体的实现代码如下:用 soup.find_all 函数找到正文标签,然后把正文部分的内容保存到 a.html 文件中。

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)

第二步就是把页面左侧所有 URL 解析出来。采用同样的方式,找到 左侧菜单标签 818516a2aea8c5412fd444e4ed52d34a

PDF 電子書籍に変換された Python クローラー実装チュートリアル
具体的な実装コードは次のとおりです。Soup.find_all 関数を使用してテキスト タグを検索し、保存します。テキスト部分の内容を html ファイルにコピーします。

python爬虫实现教程转换成 PDF 电子书

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

2 番目のステップは、ページの左側にあるすべての URL を解析することです。同じメソッドを使用して、左側のメニュー ラベル 818516a2aea8c5412fd444e4ed52d34a を見つけます

具体的なコード実装ロジック: uk-nav と uk-nav-side の 2 つのクラス属性があるためです。実際のディレクトリのリストは 2 番目のページです。すべての URL が取得され、URL を HTML に変換する関数が最初のステップで記述されました。

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)

最後のステップは、htmlをpdfファイルに変換することです。 pdfkit はすべてのロジックをカプセル化しているため、pdf ファイルへの変換は非常に簡単です。関数 pdfkit.from_file

python爬虫实现教程转换成 PDF 电子书

rrreee

を呼び出して save_pdf 関数を実行するだけで、電子書籍の PDF ファイルが生成されます。レンダリング:

🎜🎜🎜概要🎜🎜🎜 コードの総量は 50 行未満になります。ただし、ちょっと待ってください。実際、上記のコードでは、タイトルの取得方法など、いくつかの詳細が省略されています。記事、テキストコンテンツのimgタグが相対パスとなっているため、PDFで画像を正常に表示したい場合は、相対パスを絶対パスに変更し、保存されている一時HTMLファイルを削除する必要があります🎜

PDF 電子書籍に変換された Python クローラー実装チュートリアルをさらに詳しく知りたい場合は、PHP 中国語 Web サイトに注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。