ヤフーニュースのコメントをスクレイピングで自動取得する方法
ヤフーニュースへの掲載方法については過去のブログでも記載しましたが、実際に自社関連のニュースが掲載された際、ユーザーコメントをしっかりと把握・分析できているでしょうか。
サイト内で公式口コミが発生するニュースキュレーションメディアは、現時点ではヤフーニュースとNewsPicksのみとなり、この2メディアで発生した口コミは貴重なマーケティングデータとなります。
広報担当者でも意外と着手できていないのが、こうしたUGC(User Generated Content)の取得・分析です。
特にヤフートップページに掲載される「ヤフートピックス」に掲載された場合、ニュース閲覧と共に大量のコメントが付くケースが多く、ニュース内容についての反応がリアルにつかめるので、こうしたデータをしっかりと取得してマーケティングに活かしていきましょう。
※朝日新聞デジタルなど、一部コメントが元々付けられないヤフーニュースもあります。
WEBサイトのデータを自動で取得する方法
数件のコメントであれば目視してコピペ保存も良いですが、数が多くなるととても面倒です。こうした時に役立つのが「スクレイピング」です。
スクレイピングとは、普段人間がアナログで行っているWEBサイトの閲覧行動を、プログラミングで自動化して行うことで、ニュースサイトの情報を集めたり、ビッグデータ解析の際の元データを収集したりするなど、非常に効率的に情報収集を行うことができます。
このスクレイピングをヤフーニュースにも適応することで、何千というコメントを自動で取得することができます。
スクレイピングを実施する方法
スクレイピングを実施する方法としては、主に2種類挙げられます。
①スクレイピングサービスを活用する
スクレイピングはマクロなどと同様、実行プログラムの作成が必要となりますが、import.ioなどのスクレイピングツールを使えば、プログラミングを書くことなく、WEBサイトの情報を取得することができます。
こうしたWEB上のサービスは設定さえしてしまえば、PCを閉じているときでもデータを取得できる一方、日本語に対応していないサービスも多く、有料サービスとなる場合が多いです。
※import.ioは最近価格変更があったようで、現在は1,000件までは無料で、それ以上のデータ取得に関しては個別見積もりとなるようです。
②プログラムを組んで実装する
最も基本となるのがプログラミングを組んで実施する方法です。近年では無料で使える様々なライブラリが登場し、短いコードを書くだけで簡単にスクレイピングができるようになりました。
特にPythonなどのプログラミング言語は、分かりやすい短いコードで習得もしやすく、機械学習などの便利なライブラリも非常に多いので、これからのマーケターの必須ツールとも言われています。
Python × Seleniumでヤフーニュースコメントを抽出
ここからはプログラミングで実際のヤフーニュースのコメントを元データとして、Pythonを使ったスクレイピングを行っていきたいと思います。
上記のゴーン被告についてのヤフーニュースには現在5,000件以上のコメントが付いています。このニュースを元に、スクレイピングツールの一つであるSeleniumを活用して、コメントを自動で取得する方法を解説してみたいと思います。
Pythonを走らせる環境構築としては、最近ではGoogleコラボラトリーが一番簡素だと言われていますが、今回はJupyter Notebook 上での環境を想定しています。
※事前にSeleniumとChromeDriverのインストールが必要となりますがここでは省略します
まずはPythonを起動させ、ライブラリのSeleniumをインポートし、Chromeを指定ブラウザに設定します。
そして情報を格納する6個の空リストを作り、そちらに取得した情報を追加していきます。
(注)ヤフーニュースのURLは頻繁に変更されるようなので、最新のclass指定を確認して実行してください。
ヤフーニュースは10件のコメントごとに末尾のURLの数字が1ずつ変化します。まずはターゲット記事の「全てのコメントを読む」をクリックし、2ページ目以降のページナンバーをクリックして、末尾の数字だけが変わる基本URLを取得しましょう。
上記記事でいうと、
https://headlines.yahoo.co.jp/cm/main?d=20200104-00000060-jij-soci&s=lost_points&o=desc&t=t&p=
が基本URLとなります。
最終ページ数は目視で確認する必要があり、開始ページと終了ページを手動で設定します。ここでは開始ページとして1をstartに、終了ページとして500(リスト形式なので実際は499となる)をendに代入しています。
このプログラムでは、for文でformat関数でURLの末尾を1~500まで代入し、さらにrootタグで囲まれたクラスをそれぞれのページで10ユーザーごとに繰り返し取得する内容となっています。
ヤフーニュースのコメント欄をスクレイピングする際の注意事項
コメント欄にはiframeというフレームが使われているので、通常のスクレイピングコードとは多少異なります。iframe内を取得するために下記2行を追加しています。
またhtmlのクラス名などは環境によって異なるようなので、Seleniumで開いたブラウザーから確認するとよいかと思います。
※ヤフーオーサーがコメントしている際は、取得するクラスが若干変わりますのでご注意ください(good/badボタンが無くなり、参考になったボタンに変更される)。
取得されたデータを確認
取得したデータはPython上でひと目で把握することができるほか、csv等で出力も可能です。下記は実際に取得したデータです。上記のコードでgood数やbad数なども取得することができ、5,000件以上のデータであっても、サクサク簡単に確認することができます。
※実際にスクレイピングにかかった時間は5,000件のデータで1時間ほどでした。
取得したデータはPython上で様々な視点から分析できるほか、下記のように形容詞を抽出してワードクラウドにかければ、コメント傾向をビジュアル的に掴むこともできます。
このニュースでは憤慨しているユーザーが多いことが分かります。ちなみにヤフーニュースは意外にも、40代・50代がボリュームゾーンになるため、コメントもそうした年齢傾向やバイアスがかかっている点に留意しておいたほうが良いかと思います。
以上、Pythonを使ったヤフーニュースコメントの取得方法でした。
Pythonなどのプログラミングを学習する際は、書籍よりも下記のUdemyなどの動画で学ぶのが最適かと思います。下記の講座を見れば上記コーディングは一通りできると思います。
広報やマーケティング担当はもちろんのこと、プログラミングは全てのビジネスパーソンの業務効率を大幅に改善します。令和時代はプログラミングを駆使して、効率的に情報分析・データ収集をしていきましょう。
スクレイピングや広報代行のご依頼は、問い合わせフォームよりお気軽にご依頼ください。