‘perl スクレイピング’ タグのついている投稿

指定したURL内&特定タグ範囲の画像をダウンロードしたい

2020/01/23

 ここ数年、Web発の出版物が日本でも目立って増えてきました。昨年のJEPA電子出版アワードの大賞をピースオブケイクのnoteが取ったことに象徴されるように、日本でもようやくWebがかつて雑誌の担っていた「告知」の役割を果たし始めているということだと思います。コミックに関してはもうずいぶん長くそれが続いているのですが、それ以外のジャンルにもどんどん波及し始めたというのがここ数年の新しい動きです。
 さて、そうなってくると、技術サイドとしてもWebサイトからデータを取得し、電子書籍データや最終的には紙の出版物を作るためのルートを整備しなければ、という気分になってきます。ということでここ最近はWebスクレイピングの技術を学び始めているのですが、試行錯誤してどうにか指定したURL内&特定タグ範囲の画像をまとめてダウンロードできるようになったのでメモ代わりに置いておきます。なお、「特定タグ範囲」が今回キモです。サイドバーとかに大量に並ぶアイコン類の画像はあっても困るので。ブログ等で各エントリー部分の画像だけを抽出したいわけです。

ターミナルで

の順で指定すれば画像を一括でダウンロードします。

 最初にHTMLパーサーモジュールでパースし、その後XMLパーサーモジュールで再度パースしています。いきなりXMLパーサーモジュールにHTMLを食わせたらエラーで動かなかったためです。Validでない構文の読み込みには(オプションあるとは言え)弱いということなのでしょう。まあ仕方ない。なお今回初めて使ったモジュール、HTML::Selector::XPathがスゴい便利です。CSSの指定構文で書けばXPathに内部変換してくれるとか素晴らしい。
 今回は抽出テストにこのブログ(システムはWordPress)の過去エントリを使ったので措定範囲が「.post」ですが、ここは抜き出し対象のサイトごとに書き換えが必要になる感じです。変数化して引数で指定できるようにしても良かったけどどういう絞り込み条件があるかわからんのでとりあえずはコレで。
 さて次は本文テキストだぜ・・・。

(2020.1.24)

プロフィール
Jun Tajima

こちらにて、電子書籍&Web制作を担当しています。
このブログは、EPUB3をはじめとした電子書籍制作担当オペレータからの、「電子書籍の制作時にたとえばこんな問題が出てきていますよ」的な「現地レポート」です。少しでも早い段階で快適な電子書籍閲覧・制作環境が整うことを願って、現場からの声を発信していこうと目論んでおります。

当ブログ内の記事・資料は、私の所属しております組織の許諾を得て掲載していますが、内容は私個人の見解に基づくものであり、所属する組織の見解を代表するものではありません。また、本ブログの情報・ツールを利用したことにより、直接的あるいは間接的に損害や債務が発生した場合でも、私および私の所属する組織は一切の責任を負いかねます。