PythonでHTMLからPDFを生成する

どうもすわんです。

現在、レアジョブという英会話スクールが配信しているポッドキャストを使って英語のリスニングの勉強をしています。

 

ポッドキャストは音声のみですが、音声のテキスト部分も見ながら勉強したかったので、

レアジョブの公式サイトに公開されているテキスト部分をスクレイピングしてPDFにまとめると楽そうだなと思ったので、Pythonでやってみることにしました。

 

結論からいうと、20行くらいでさくっと完成したので、めちゃくちゃ簡単でした。

ライブラリのインストール

pipを使って以下のライブラリをインストールしていきます。

  • requests
  • pdfkit
  • beautifulsoup4
ライブラリのインストール
$ pip install requests pdfkit beautifulsoup4

 

 ソース

ソースを下記に貼っておきます。めっちゃ簡単です。

scraping.py
import requests
import pdfkit
from bs4 import BeautifulSoup

r = requests.get("https://www.rarejob.com/dna/")

soup = BeautifulSoup(r.content, "html.parser")
title = str(soup.select("h1 > a")[0])
article = str(soup.select(".article")[0])

f = open('article.html', 'w')

f.write(title)
f.write(article)

f.close()

pdfkit.from_file('article.html', 'article.pdf')

生成されたPDFファイル

 

こんな感じで簡単にPDFを生成することができました!

 

普段は、Node.jsでPuppeteerというGoogleのライブラリを使ってスクレイピングしているのですが、

Chromeを起動していない分、Pythonのrequetsts, beautifulsoup4を使ってやった方が格段に早そうな気がします。

(大したデータ量じゃないので、感覚ですが)

また、英文のシングルクウォートが文字化けしちゃってます。

pdfkitの方でうまくエスケープできてないのかもしれません。ここは自分でエスケープ処理が必要そうです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です