[Python] selenium PhantomJS でスクレイピングする

newspicksのトップページをスクレイピングして、記事を取得しました。

普通にスクレイピングでも記事取得できるのですが、newspicksのトップページは、下にスクロールすると、JSでページローディングしているので、

ただ requestでスクレイピングしてもローディング後のページでスクレイピングしてくれません。

そこで、使うのが、selenium と PhantomJSです。

selenium

seleniumは、Webブラウザを操作するソフトウェアです。

ボタンを押す、入力するなどUIを自動で操作することができます。

PhantomJS

※PhantomJSの開発は終了し、リポジトリはアーカイブ化されました。

ヘッドレスブラウザです。

ヘッドレス・ブラウザ

Webコンテンツを画面上に描くグラフィック・ユーザ・インタフェース(GUI)を省略したブラウザ

要は、コマンドでブラウザを実行できる環境のことです。

selenium経由で、PhotomJSを操作することで、JSを考慮してスクレイピングすることができます。

コード例

とりあえず完成コードを載せておきます。

ライブラリは、BeautifulSoupを使っています。

 

コード解説

 

PhantomJSをドライバとして指定すると、URLを読み込むと

JSを読み込んだ状態でURLを取得できる!!!

 

ページローディングした後の記事のURLも取得できた!!!

 

まとめ

selenium面白いですね。

もっとselenium触っていきます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA