![見出し画像](https://assets.st-note.com/production/uploads/images/156136225/rectangle_large_type_2_4e7c3f537e2407afb090b8e3530b3438.png?width=1200)
スクレイピングは勉強迷子になる
※勉強録
はじめに
Pythonを使ったWebスクレイピング・APIによるデータ活用に興味がある。本屋でさまざまな本を眺めてみたが自分が持っている知識と比べて勉強領域が広く、勉強を続けるのがしんどいと感じた。
見通しを持って学習を進めるため、スクレイピングに関わるテーマを、システムの関係性を概念化した図で整理する。
スクレイピングの範囲
まずは小さめのゴールとして、次のようなことをやりたい。
Webページから、必要な情報だけ抜き出して、加工し、適切なフォーマットで保存する。
例えば、Spotifyのページから、今東京で聴かれているランキング上位10曲の、曲名とアーティスト名を抜き出し、Excelのシートに書きだしたい。
加工には機械学習や深層学習を利用したい所だが、一旦後回しにする。
基本単語
スクレイピングとは?
スクレイピング(Scraping)とは、Webサイトから任意の情報を抽出する技術のこと。スクレイピングすることで、Web上の情報を自動で収集します。
任意の(好きな)情報を抽出するのは、Webサイトを見ながらドラッグしてコピー&ペーストをすれば手軽にできるけど、自動で収集するのがポイントなんだろうな。データベースに突っ込むためには、CSV形式(Excelみたいな表形式のファイル)に変換する必要がありそうだし。
クローリングとは?
クローリング(Crawling)とは、プログラムがWebサイトを定期的に循環して、情報をダウンロードする技術のこと。クローリングを行うプログラムは、クローラー(Crawler)とかスパイダー(Spider)などと呼ばれます。
定期的に巡回して情報をダウンロードしておく必要がある作業って何だろう?ダウンロード先は多分データベースに保存するんだろうな。
→ 例えば、株価や為替などの金融関連データの取得や、天気予報の取得などか。
定期的に処理を実行する仕組みは、macOS/Linuxでは「cron」、Windowsでは「タスクスケジューラー」というものがあるらしい。
学習テーマの全体像
大きく分けて4点だ。
①Webサーバからのhtmlファイル(データ)のダウンロード
②htmlファイルから必要な情報を抽出&加工
③加工した情報をフォーマットを指定して保存
[その他の観点] プログラムの実行環境管理。batファイルの自動実行処理。
![](https://assets.st-note.com/img/1727615116-TdSoO36G2AZ8KhWEx5FtHsQr.png?width=1200)
特に気になるのは、マシンリソースを抑える方法と、生成AIの活用余地だ。
各領域すべて経験が少ないため、しんどくならないように進めたい。
マシンリソースを抑えるために、①のデータのDLの負荷を下げる方法があるのか、DLは頑張ってやって②で抽出する際に負荷を下げることになるのか、あるいはWebAPIを使えってことなのか、気になる。
②の加工の自由度は気になる。仕様の変更に耐えられるように設計した方が良いだろうけど、めんどそう。
③で保存ではなく、Webサーバーへの問合せを行う処理はどうすればできるか?(
SeleniumでのWebAPIのPOST処理とか?※SeleniumにPOST処理はないっぽく、POST処理にはrequestsを使う)
おわりに
「安全に高速にWebサイトの情報を保存する方法」を探していたら、スクレイピングのPython用パッケージの理解だけでは不十分で、勉強迷子になった。
そこで処理の流れごとに学ぶべきテーマを整理できて学びになった。
APIが実装されているのは、スクレイピングによってWebサーバの負荷がかかることを防ぐためだと知れたのも面白かった。
細かい処理は、これから実装の中で学んでいきたい。