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

 

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

関連記事

スクレイピングでデータを集めてみたんだけど、10000行とかデータが多すぎて分析が面倒だよ。 なんかいい方法ないかな?     […]

 

まとめ

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

\IT未経験者からのサポートあり!転職サービス3選!!/

サービス名
未経験 未経験OK 未経験の転職専用 経験者向け
公開の求人数 ITエンジニア全体で1万件以上
ITエンジニア未経験で600件以上
未公開 5,000件以上
利用対象 全職種 IT特化 IT特化
特徴 ✓誰もが知る転職サービス
✓経歴を登録しておくとオファーが来る
✓企業担当者と条件交渉
✓スキルの身につく企業を紹介
✓IT専門のエージェントが対応
✓転職成功すると年収200万円以上の大幅アップがある
転職サポート内容
  • 求人検索
  • 企業担当者と交渉
  • 求人紹介
  • ライフプランのサポート
  • キャリア相談
  • 求人紹介
  • 提出書類の添削
  • 面接対策
公式サイト リクナビネクスト テックゲート レバテックキャリア

 

 

最新情報をチェックしよう!
>プログラミングスクール検索・比較表サイト

プログラミングスクール検索・比較表サイト

ワンクリック、さらに詳細に条件を指定してプログラミングスクールの検索ができます。さらに比較表により特徴を細かく比較できる!

CTR IMG