前回、私のオリジナルプラグイン「WP Rss Scrapeing Post」を使ってRSSフィードを取得しよう、という話をしました。
どうして他のRSS系無料プラグインでは駄目なのかを説明します。
WordPressにはRSSフィードを取得できる無料プラグインがいくつかあります。
WP Rss Scrapeing Postを使う理由
それを使えばいいじゃん! となるわけですが、1つ問題があります。
RSSフィードを取得できたとしても、タイトルとリンク先だけしか取得できないRSSばかりなんですね。
だから、それだけ取得できればいいという人はいいんですが、本文も取得したいという場合はRSSといいながら実はスクレイピングする必要があります。
スクレイピングというのは、検索エンジンのボットがやっているようなことで、ウェブページから情報を抽出することを指します。
例えば、天気のページから自分が住むエリアの天気だけを抽出する、といったことをしたいならスクレイピングが必要となります。
ただし、スクレイピングといっても取得するページが親切にデータ構造を公開しているわけではないので、スクレイピングしたい人がデータ構造を理解してデータを抽出するテクニックが必要となります。
XMLのような解析されることを前提としたデータ構造ではなく、単なるHTMLだから、というのがその理由です。
また、取得先のHTMLには記事広告もあったりします。
せっかくスクレイピングをしてもアドワーズ広告のような記事コンテンツも取り込んでしまうのはマズイですよね。
スクレイピングをしつつ、不要な広告要素や関連リンクなどは削除しなければならないのです。
まぁ、言ってみれば「WP Rss Scrapeing Post」はRSS系プラグインと言いながらほとんどスクレイピングツールだったりします。
試しにYahoo! Japanの国内ニュースの記事を取得してみます。
普通にブラウザで開くとこんな感じのXMLデータが表示されます。
▼Yahoo!ニュース・トピックス – 国内
https://news.yahoo.co.jp/pickup/domestic/rss.xml
![](https://wp-plugin.info/wp-content/uploads/2019/07/71e236a22ea3a3806b07660395a40a47.png)
見ての通りタイトルとその記事へのリンクしかありません。
ですので当然、普通に取り込むとWordPressの記事はタイトルとリンクだけの寂しいものになります。
もう少し見ていきましょう。
例えば、2019年7月14日付けのニュースに「無党派層67万票どこへ 東京」というニュースがあります。
ニューストピックですのでリンク切れになるかもしれませんのでキャプチャを載せます。
無党派層67万票どこへ 東京
https://news.yahoo.co.jp/pickup/6330013
開いてみると以下のようになっています。
そう、なんと実はヤフーニュースは単にリンク先を開くと要約記事で記事全文ではないんですね。
「続きを読む」というリンクをクリックをしないと記事全文が読めない二段構えなのです。
「続きを読む」をクリックすると以下のようになっています。
無党派層奪い合い=知事は距離置く-東京【注目区を行く】
https://headlines.yahoo.co.jp/hl?a=20190714-00000011-jij-pol
本丸は「https://news.yahoo.co.jp/pickup/6330013」ではなく「https://headlines.yahoo.co.jp/hl?a=20190714-00000011-jij-pol」にある、ということが分かりますね。
考え方としては、まず要約記事の中に続きを読むためのリンク先を抽出する必要があります。
それに成功したら、記事本文のページにリモートアクセスしてようやくスクレイピングへという流れです。
面倒臭いでしょ?
これが海外の無料RSS系プラグインではできないんですね。
仮にできたとしても設定が英語だから多分初心者には難しい。
そこで魔改造です。