どうも、塩ラーメンです。
本日から、スクレイピングの勉強に入ります。入りますというか、基礎を今日勉強して、明日自分で好きなようにスクレイピングしてみて、それで一旦終わろうと思います。
まずはseleniumを使ったスクレイピング
seleniumは、ブラウザの操作を自動化するためのフレームワークなのだそうです。seleniumでは、ブラウザを開き、情報を取得し、必要な場合(ログインする場合など)そこにテキストを挿入したりなどできます。その機能を使って、スクレイピングができるというわけです。
selenium自体の操作はそれほど難しくはないのですが、seleniumでブラウザを起動するための「webdriver」というものを使うのですが、その部分でエラーが発生し、少し手こずりました。
下から3行目のoptions=optionsを” ”で囲ってしまっていたのが間違いでした。この画像は修正版です。ちなみに、options.add_argument(“–headless”)で、ブラウザを実際に立ち上げることなく、背後で処理をしてくれるようにしています。
BeautifulSoupも使いました
BeautifulSoupは、HTMLから欲しい部分を抽出するためのライブラリです。requestsというライブラリでサイトからhtmlを取得し、BeautifulSoupで欲しい部分を抽出する、という流れを行いました。
BeautifulSoupは、CSSセレクタが使えるというのが、かなり便利だと思いました。私はフロントエンドを勉強したことがあるため、CSSセレクタには馴染みがあります。
書き方は簡単です。「soup.select(‘ここにCSSセレクタ’)」とするだけで、記述したクラスなどに該当する部分を抽出できます。soupは、取得したhtmlを入れたBeautifulSoupオブジェクトを格納したものです。慣習的にsoupを使うらしいです。
スクレイピングって意外と簡単?
実際に勉強してみるまで、スクレイピングってすごく難しいんだろうなと思っていたのですが、やってみるとすごく簡単でした。こんなに簡単にできてしまうのか!と感動するくらい!
ただ、いろいろサイトを読んでみると、スクレイピングはやり方を学ぶことよりも、欲しい結果を得るためにどうスクレイピングするかを考える方が難しいようです。
今回使ったサンプルサイトは、スクレイピングしやすいように作られていましたし、取得するデータも少ないものでした。でも実際は、普通のサイトはIDやクラスがスクレイピングを前提に作られているわけではないし、欲しいデータがひとところにまとまってたりするわけでもありません。
そういった複雑な作りの(しかも複数の)サイトから欲しいデータを効率的に抜いてくるプログラムをどう書くかが、難しいのでしょう。
今日は、YouTube動画でのスクレイピングの勉強より、その動画コメント欄を見て、同じく初学者の方々が引っかかっている問題の解決法を検索している時間の方が長かったです(笑)
ただ、そのように他人のトラブルの解決法を調べることが、すごく勉強になりました。YouTube動画で勉強している方は、「コメント欄を見て自分で解決法を調べてみる勉強法」、ぜひ試してみてください。
基礎的なスクレイピングのやり方は学べましたので、明日は、いろいろなサイトを参考に、自分で何か欲しいデータをスクレイピングしてみようと思います。
最後までお読みいただき、ありがとうございました。
感想・意見・指摘などは、コメントに残していただけるとありがたいです。
ツイッターで、ブログの更新情報などお知らせしています。
【https://twitter.com/saltramen_book】
それでは、また別の記事でお会いしましょう。
コメント