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次元にプロットする方法を述べました。

プログラミング・実務経験がある方も必見!
空いた時間をスキルアップ・収入増に使ってみませんか?

副業で仕事を取る方法を教えてくれる!
プログラミングスクール4選の詳細

 

 

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

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

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

CTR IMG