webスクレイピングを知識0から始めて習得するまで①【スクレイピングとは、学習方法、Scrapyの概要、データ取得の3ステップ、Scrapyのメリット】
2022/1/8 【1日目】
データ分析コンペである程度pythonのコードとかpandasとか使うのに慣れたので、ずっとやりたかったwebスクレイピングを1から勉強していきます。
webスクレイピングができるようになったらやりたいことは、webからTiborの履歴をとってきて、チャートを表示できるサイトを作りたい。データ分析で勉強したpandasとかmatplotも使うことになると思うから丁度いい。
具体的には、全銀協のサイトから履歴を取得して、チャートに変換し表示したい。なぜかというと、株価とか長期金利のチャートを載せているサイトはいくらでもあるのに、Tiborのチャートはいくら探してもないから作っちゃおうと思って。
あともう1つ作りたいwebサービスがあるけど、それは今後書いていく。
スクレイピングとは
webページからダウンロードしてきたhtmlデータを解析し、タグとかを除いた必要なデータだけを抽出する作業。この抽出作業のことをスクレイピングという。
学習方法
Udemyのこの講座で勉強していく。スクレイピングの講座はたくさんあるけど、評価が一番高いのとなんか良さげなScrapyを教えてくれるから。内容は↓こんな感じ。
Python3のスクレイピング専用フレームワークScrapyを用いて、より高度で効率的なスクレイピング・クローリング方法を短期間で習得します。旧式のBeautifulSoupから卒業し、より高度なスクレイピング・クローリングを実現しよう!!
Scrapyの概要
Scrapy とは Python でクローラーを実装するためのフレームワークです
Python でクローラーというと BeautifulSoup や lxml などの HTML パーサーがよく使われていますが、 Scrapy はこれらのライブラリと違うレイヤーのもので、クローラーのアプリケーション全体を実装するためのフレームワークです
公式ドキュメントでも、BeautifulSoup と Scrapy を比較するのは、jinja2 と Django を比較しているようなものだと言ってます
ちょっとよくわからない。とにかく、Scrapyはpythonライブラリではなくフレームワークらしい。
Pythonフレームワークを利用することで、開発の速度を大幅にアップすることができます。フレームワークには使用頻度の高い機能が最初から用意されているため、それらの機能をフレームワークから呼び出すだけで、最低限の機能がそろうようになっています。そのため、フレームワークを使用せずに開発を行うよりも、開発にかかる時間を削減することができます。
やっぱりなんかよさそう。
データ取得の3ステップ
①webページのダウンロード:webページのリンクを辿ってwebページ(html)をダウンロードするだけの作業。最初にアクセスするURLの指定、リンクのたどり方の指定はコーディングが必要。ダウンロードはScrapyがやってくれる。
②データの抽出:htmlデータを解析し、タグとかを除いた必要なデータだけを抽出する作業。この作業をスクレイピングという。必要なデータの抽出方法の指定はコーディングが必要。抽出はScrapyがやってくれる。
③データの保存:csvファイル等への出力はScrapyがやってくれる。。
これらの3ステップがページの数だけ必要になる。①と②のコードをSpiderクラスに書けば良いらしい。
Scrapyのメリット
いままではダウンロードはrequest、データの抽出はbeautifulsoopなど、異なるライブラリが必要だったけど、Scrapyでは単独でそれらを遥かに上回る機能がある。3ステップを全て1つでカバーしてくれる。
「Codes&Co.」「コーズコー」