←Pythonでスクレイピング(メモ11:タグの属性表記の違い色々)
→Pythonでスクレイピング(メモ13:seleniumが正しく動作するまで)
こんばんは。Pythonでスクレイピング奮闘メモです。
今回より新しい課題に取り組んでまいります。
その課題は「JavaScriptのスクレイピング」です。
<この記事の目次>
・目標・・・今後は具体的に何の解決に向かっていくのか
・とりあえずググったら糸口が見えた・・・スクレイピングに至るまでの流れを把握
・必要な準備・・・とりあえず「BeautifulSoup」と「Selenium」が必要
※動作環境
macOS High Sierra 10.13.6
プロセッサ 2.7 GHz Intel Core i5
メモリ 8 GB 1867 MHz DDR3
Python 3.6.0 :: Anaconda custom (x86_64)
コマンド実行は「ターミナル」、.py編集は「Xcode」を使用
目標
例えばこのページ(YahooのHP)。
ちょうど真ん中にジャンル別のニュース一覧枠があります。
上図の箇所をクリックすると、別の情報が表示されます。
しかしソースを見てみると・・・
まあ該当箇所は分かりませんが、仕切りに次のタグがあります。
<script type="text/javascript">
そのタグ以下はおそらくJavaScriptで書かれたコードがずらり。
この場合はどのようにスクレイピングすれば良いのか?
これを解決するのが今後の目標になります。
とりあえずググったら糸口が見えた
「JavaScript スクレイピング」でググる(Yahooでは無い)。
さすがGoogle、トップにでてきたページですぐに分かったしまった!
※嘘です本当はもっと検索しました笑
しかもトップにでてきたページは一度読んで一旦スルーしてます笑
また詳しい友人に検索キーワードを聞いたら「スクレイピング 非同期」と教えてくれたので検索しましたが、よく分からず笑
まあ色々調べてまた戻ってを繰り返してようやく理解が追いついたわけです。
(ちなみにトップにでてきたページはCSSセレクターで一度お世話になりました。→Google ChromeでCSSセレクターを作成)
下の方JavaScriptに関する内容がありました。
コードなどの細かい話はさておき、JavaScriptで記述されたページをスクレイピングするためには以下の手順を踏む必要があるようです。
①プログラミング上でブラウザを起動する
②ブラウザで該当ページにアクセスする
③アクセスすると(時間差はあるが)JavaScriptが実行される
④(完全に)実行後のHTMLを取得
⑤取得したHTMLをスクレイピングする
ふーんなるほど。
とても分かりやすい。
JavaScriptさえ実行されれば後は今まで通りということみたいだ。
その為にはいくつか準備が必要なようだ。
必要な準備
「BeautifulSoup」と「Selenium」なるものが必要だそうだ。
共にpipでインストール出来る。
pip install beautifulsoup4 pip install selenium
これだけです笑
次回は実際にSeleniumを簡単な題材で使っていこうと思います。