selenium で yahooニュースのコメントをスクレイピング-python

selenium を使って yahooニュースのコメントをクロールし、スクレイピングしてみます。ブラウザは PhantomJS を使います。プログラムは python です。

- 目次 -

スポンサーリンク

インストール

selenium と PhantomJS のインストールは非常に簡単です。

selenium

コマンドプロンプトで以下を入力します。

PhantomJS

こちら から ZIP をダウンロードし、適当な場所に解凍します。(解凍先のパスをプログラムで指定します)

起点はコメント一覧

クロールの起点はコメント一覧のページにします。ニュース記事の下部で次のリンクをクリックして遷移するページです。

すべてのコメント

コメント取得の仕組み

一覧ページのコメントは iframe で表示されています。JavaScript でコメントを取得しているようですが、取得用の URL は動的に組み立てているようです。組み立てに使うパラメータは

<div class=”news-comment-plugin”>

の属性としてセットされています。このパラメータを組み立てると、コメント取得の URL ができあがります。下図のイメージです。

すべてのコメント

返信コメント

各コメントに対する返信コメントは 最初は 3件しか表示されません。4件以上の返信コメントがある場合は 以前のコメントを表示 リンクを click します。click すると、3件づつコメントが追加表示されます。

スクレイピング・プログラム

上記をふまえ、作成するプログラムは次のようにします。

一覧の各ページに対して

  • URL を組み立て
  • その URL でページを取得(ページは 10件のコメントを含んでいる)
  • ページ内の返信コメントを全て表示
  • その結果生成されるページからコメントを取りだす

これを、最終ページまで繰り返します。

以下、ソースです。

実行すると 「おかあさんといっしょ」でサプライズ演出 一体、何が? NHKに秘密を聞いた のコメントが表示されます。

こんな感じです(一部抜粋)

保存

コメントを MongoDB に保存してみます。__main__ を次のようにすれば、保存されます。

スポンサーリンク
その他の記事

コメントはお気軽に