Webスクレイピングという技術を使えば、ネット情報を自動で取得することができます。
今回はPythonを使ってWebコミックサイト「となりのヤングジャンプ」をRSSフィードを用いてスクレイピング、最新話が更新されているか自動で確認します。
そもそもRSSフィードってなに?
RSSとは、ニュースやブログなど各種のウェブサイトの更新情報を配信するための文書フォーマットの総称である。(Wikipedia)
つまり、そのサイトの更新情報が詰め込まれているRSSを利用すると、なんやかんや通常のWebスクレイピングよりも少ないコードで情報をゲットできるのです。(その技術を応用してサービスを提供してるのがFeedlyです)
RSSフィードの確認方法
下図のようにRSSのアイコンやFeedlyのアイコンがサイトの片隅に表示されている場合、RSSフィードが提供されていると考えて間違いありません。
オレの好きなサイトにRSSアイコン無いんだけど、ホントに無いの?実はあるんじゃね?
そう思ったときはBeRSS.comでRSSフィードを検索しましょう。
URLを入力する場所がありますので、そこに目当てのサイトのURLを入れて、ボタンを押すとRSSフィードが生成されています。
これで外部からの必要な情報はゲットしました、これから実際にコードを書いていきます。
実際にコードを書いていく
Python3でコードを書く時に必要になるモジュールはfeedparserだけです。まずはpipなりPycharmのセッティングなりでfeedparserをインストールしましょう。
【参考記事】Pycharm経由でBeautifulSoupをインストールする
まずは、ワンパンマンのエピソードを第一話から最新話まで一気に表示させます。「一気に表示させる」というと難しそうに聞こえますが、実際に書くコードは4行です。
import feedparser onepunch = feedparser.parse("https://tonarinoyj.jp/atom/series/13932016480028984490") for entry in onepunch.entries: print("\n", entry.title)
“\n”は改行を意味しますので、無くても正常にスクレイピングできます。これを保存して実行すると、この通り。
ねぇ?簡単でしょう?
自動的にネットにアクセスして情報を持って来させるなんて、手下をパシらせてるみたいでイイ感じに征服感が得られるでしょう?(オイ)
ところで最新話を確認するだけなら話数の羅列は必要ありません。そこでfor文を消して最終行のentryをonepunch.entries[0].titleと書き直します。これでonepunchリストの全てを表示することなく、最新話のタイトルだけ表示します。
import feedparser onepunch = feedparser.parse("https://tonarinoyj.jp/atom/series/13932016480028984490") print("\n", onepunch.entries[0].title)
3行でコードが書けてしまいましたね。んでこれを実行すると…。
最新話のタイトルだけが表示されました。
ロングラン作品の場合は何百話と連載していて、どの話数が最新か分からない事もあります。それを防止するために、さらに更新日とリンクを追加しましょう。
print文に、onepunch.entries[0].updated、onepunch.entries[0].linkを加えます。
import feedparser onepunch = feedparser.parse("https://tonarinoyj.jp/atom/series/13932016480028984490") print("\n", onepunch.entries[0].title, "\n", onepunch.entries[0].updated, "\n", onepunch.entries[0].link)
そして実行。
これで「ワンパンマンの第146話が、2019年2月22日の更新された」と確認できて、リンクから飛ぶことも出来るようになりました。
他作品も追加したい場合はコレを基に付け加えれば良いし、feedparserの公式ページを覗いてさらに改良とかしちゃえば、もう完璧ですね。
さらに、この更新情報をCronで実行、LINE APIを使えば完全自動で通知をしてくれるシステムが完成します。
まとめ
以上、RSSフィードを用いてWebスクレイピングする方法を紹介しました。
今回はウェブコミックのサイトを利用しましたが、RSSフィードがあるなら基本的にどのサイトでも通用するはずなので、ぜひ自分の好きなサイトで試してみてください。