Python プログラミング

JavaScriptのページをスクレイピング・クローリングするならPython+Seleniumがオススメ

投稿日:2018年8月3日 更新日:

こんにちは!シミダイ(@shimidai2100)です。

「Python」とWebテストツールとして有名な「Selenium」を使用して、

JavaScriptが使用されているWebページのスクレイピング・クローリングを行う手順を紹介します。

今回は「Google Chrome」ドライバーを使用したWebページのスクレイピング・クローリングを行っていきます。

JavaScriptを使用したページの多くは

非同期通信でデータを引っ張ってきていたり対応したブラウザでないと動作させなかったり

初心者には扱うことが困難です。

その他のアプローチ方法として「requests」ライブラリや「Scrapy」があるが、どちらも学習コストが高く簡単には使いこなせません。

そのため、初心者でも簡単に扱うことが出来るSelenium」が大変オススメになります。

「Selenium」の扱い方については以下の記事にもまとめていますので参考にしてみてください。

[Python]Seleniumのインストール方法とWebブラウザ操作の自動化 [初心者向け]

こんにちは!シミダイ(@shimidai2100)です。 Webテストツールとして有名な「Selenium」を使用して、Webブラウザ操作の自動化を行う手順を紹介します。 「Python」と組み合わせ ...

続きを見る


初心者がSeleniumを使う理由

requests」ライブラリは「Cookie」や「Header情報」など設定する必要があり、

初心者では実際にスクレイピング・クローリングまで実装できません。

Seleninum」はブラウザを直接使ってWebスクレイピング・クローリングを行います。

ただし「Seleninum」は速度が少々遅いので、より性能が求められる場合は「Scrapy」などを使用しましょう。

Seleniumのインストール

まずはSeleniumのインストールを行います。

pip」を使用してインストールします。

PyCharmを使用している場合は下の記事を参考にインストールしてみてください。

PyCharmにライブラリをインストール・アップデートする手順

こんにちは!シミダイ(@shimidai2100)です。 PyCharmで追加のライブラリを「Python Package Index」などリポジトリからインストールとアップデートする方法を紹介します ...

続きを見る

これでSeleniumのインストールは完了です。

ドライバーの入手とインストール

次にドライバーの入手とインストールをします。

今回は「GoogleChrome用のドライバー」のダウンロード方法を紹介します。

「ダウンロードサイト:ChromeDriver - WebDriver for Chrome」にアクセスします。

ChromeDriver」を選択しましょう。

Google ChromeのSelenium用ドライバーのダウンロードページ

Latest Releseの「ChromeDriver」を選択します。

Google ChromeのSelenium用ドライバーの最新版を選択

各OSに合わせたドライバーをダウンロードしましょう。

Google ChromeのSelenium用ドライバーの各OSのダウンロードページ

Windowsは64Bit版だとしても、「chromedriver_win32.zip」を利用できます。

下がメジャーブラウザのドライバーのダウンロードサイトになります。

ダウンロードしたメディアをOS上の所定の場所に配置します。

今回はメディアを下に配置します。

Selenium用ドライバーのchromedriver.exeの配置先

JavaScriptが有効になっているサイトをスクレイピング

JavaScriptで「”https://news.yahoo.co.jp”のおすすめの記事

をスクレイピングしたいと思います。

下の赤枠のタイトルを取得したいと思います。

yahoo newsのオススメ記事のタイトル

記事タイトルの要素を特定する

初めにGoogleChrome記事タイトルにどんなセレクタが適用しているか確認する必要があります。

GoogleChromeで「https://news.yahoo.co.jp/」で開きましょう。

次にWindowsでは「F12」Macでは「Control + Option + I」で「検証モード」を開きます。

yahoo newsのオススメ記事のタイトルのセレクタを確認

今回取得した要素は「dtタグのclassがtitl」ということがわかります。

seleniumでJavaScriptをスクレイピングする時の方法:Headlessモードを有効化

seleniumでJavaScriptをスクレイピングする時は「Headlessモード」を有効化します。

上記のようにオプションで「Headlessモード」を有効化します。

Headlessモードとはブラウザを起動させずにブラウジングさせる機能になります。

実際に「selenium」でスクレイピングしてみる

今回用意したサンプルコードは以下になります。

以下のコードを実行してみましょう。

出力結果は以下のようになります。

しっかりと記事タイトルを取得できているができました。

「ラジオスター」出演ナウン(Apink)、ツウィ(TWICE)への愛情を告白”とてもきれい”
「半分、青い。」第105話は22・1% 鈴愛「死んでくれ」物議に北川悦吏子氏「私も現場も納得してやっていること」
「半分、青い。」鈴愛「死んでくれ」に賛否 華丸「夫婦間の問題」も「涼ちゃんは極端」北川氏の思いは…
観月ありさら”和声ドリームガールズ”が能舞台でユーミンの名曲を披露
ローレン・ザラツニック: テレビの良心
日本代表の比江島慎、海外移籍決定! 豪州のクラブに加入「後悔すると思い決断」
往年の名手アビダルがバルサ帰還。使命はデンベレを覚醒させること。
ノンスタ石田憤慨「なんなの?これ?」“ベビーカー問題”で妻が受けた舌打ち
ポール・ブルーム: 先入観は良いことになり得るか?
三浦りさ子、夫カズと結婚25年「山あり谷あり」
長友佑都、祖母からの格言が「深すぎる」と話題 10万超反響「何度読んでも奥深い」
加熱式たばこ市場拡大 シェア3割超視野 顧客争奪戦が激化
欠席の山根会長“壇上にあいつ上げるな”
韓国、111年ぶりの猛暑…各地で停電事故など「安全な生活」に脅威(2)
ユベントスとミランで大型移籍実現へ イグアインがレンタル、ボヌッチは交換トレード

 

スポンサードリンク

関連記事

-Python, プログラミング

Translate »

Copyright© shimidai2100 , 2018 All Rights Reserved.