seleniumとpythonを使ったスクレイピングをyahoo知恵袋を例に解説!図に出力も

ネット上のデータ収集は、スクレイピングを使うと効率的にできて良いと聞いたよ。
しかし、やり方が良くわからない。
スクレイピング方法をだれか教えてねん!

また、集めたデータをどう活用するの?
誰も教えてくれないから教えてよ!

というわけで、今回はYahoo知恵袋の質問の検索結果の取得および、質問の詳細ページの取得を例にスクレイピングの実装例を紹介します。

さらに、集めたデータの活用例としてword2vecとPCAを用いて近い単語をグラフにプロットする例も紹介します。

準備

まずは、スクレイピングするための必要なものを準備します。

準備するもの

・pythonの基本的な文法の知識(この記事では解説しません)

・seleniumという自動テストで使用するライブラリ

・chromedriverというGoogle Chromeのドライバ

seleniumのインストール

seleniumをインストールします。

インストールは、以下のコマンドで実行できます。

pip install selenium

chromedriverのインストール

以下のサイトに行き、Google Chromeのドライバをダウンロードします。

https://chromedriver.chromium.org/downloads

インストールされているGoogle Chromeブラウザのバージョンに合わせたドライバをダウンロードします。

Chromeのバージョンは、以下の手順で確認ができます。

  1. メニューから「Chrome」を選択する
  2. 「Google Chromeについて」を選択する
  3. 画面内の「Chrome について」の部分にバージョンが記載されています。

■ドライバーを間違えると・・・・

プログラム実行時、ドライバーを間違えていると、以下のようなエラーが出ます。

SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 81

そのような場合は、バージョンを確認してダウンロードします。

UP主(筆者)は、ドライバーのエラーで1日中はまっていたようですよ。
よって、ドライバーのバージョンは注意深く進めましょう。

xpathを調査する

取りたい部分のxpathを調べます。

xpathを調べるために筆者は、Google Chromeを使用しています。

質問の検索結果のxpathを取得する手順を記載します。

  1. マウス右クリックしてメニューを出す
  2. 「検証」をクリックする
  3. ブラウザーの右側にhtmlソースが出てくることを確認
  4. 該当するhtmlソースのところで右クリックしてメニューを出す
  5. 「Copy」を選択する
  6. 「Copy XPath」を選択しクリップボードにXPathをコピーする

スクレイピングをやってみる

では、実際にスクレイピングをします。

この記事では、以下の2つのページをスクレイピングしています。

・検索結果の質問一覧から各詳細へのリンク情報

・質問詳細の質問文とアンサー(回答)

スクレイピング方法については、実際のコードを使って解説します。

これらのコードはgitに上げたので、全体をみたいときは参考にしてください。

検索結果の質問一覧

この例では、検索結果をcsvに書き出す

質問詳細の質問文とアンサー

その後に、csvからリンクを1つずつ読み込み

スクレイピング結果を図にプロットするよ

スクレイピングのやり方わかったけど、何万文字もあるテキストデータなんてどうするねん?
ひとつひとつ丁寧にみている余裕なんてあると思う?

要約して、ユーザの発言内容の傾向を調べてみてはどう?
具体的な要約方法の一つは、2次元の図にプロットしてみることだよ。

スクレイピング結果を2次元の図にプロットすると以下のような図を作ることができ、ユーザの発言内容の傾向を”なんとなく”調べることができます。

2次元にプロットするためには、以下の技術を使っています。

  1. 日本語の形態素分析
  2. word2vecによる単語のベクトル化
  3. PCA(主成分分析)による次元圧縮
  4. matplotlibによる図にプロット

それにしてもかなり汚い図だね~
単語が重なりすぎて、傾向がつかみずらいな~

up主(筆者)が無駄な単語も出力してしまっているからね〜。
本当は、名詞のみ出力するなどの対応が必要だよ。
面倒だからやっていないらしいよ。

具体的な実装方法については、以下の記事でまとめたので参考にしてください。

https://programming-info.dream-target.jp/word2vec_jp

まとめ

今回はyahoo知恵袋を例にスクレイピング方法、および集めたデータを2次元にプロットする方法を述べました。

■参考記事

https://programming-info.dream-target.jp/word2vec_jp

https://programming-info.dream-target.jp/python_word2vec

スポンサーリンク
PR




PR




シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
PR