【プログラム】Python「Google Colaboratoryでスクレイピングしてみた!」
こんにちは!tsukihiです。
GoogleColaboratoryとPythonを使って簡単なWebスクレイピングのプログラムを作りました。 使用しているライブラリはRequestsとBeautiful Soup4です。
かなりの時間を費やしましたが、スクレイピングの基本的な構造を理解するためのアウトプット(自己満足)です。
初学者なので、あまり参考にはならないと思います…
- ① スクレイピングとは?
- ② スクレイピングの注意点
- ③ 自動書記(ヨハネのペン)を作ってみる
- ④ ライブラリのインポート
- ⑤ コード書いてみる(1)
- ⑥ コードを書いて見る(2)
- ⑦ txtファイルへ書き出す
- ⑧ 完成したらこんな感じでした
① スクレイピングとは?
スクレイピングとは、WEBサイトから自動的にテキスト情報を摘出する技術。
毎回手動でデータを引っ張ってくるのは非常に面倒であるためスクレイピングを使って自動でデータを引っ張ってくることが多い。
応用範囲が広い技術で、様々な場面で用いられているし応用も可能。
例えばスクレイピングを使うことで株価の情報を日々抽出して自動売買するなど応用ができる。
技術的にはPythonとHTMLの基礎知識があれば問題ない
スクレイピング自体はPythonの「Requests」「beautifulsoup」「selenium」というライブラリを使えば簡単に実装できる。
スクレイピング後のデータに関しても、Pythonを用いて解析を行うことが可能、簡単に実装可能ですが、Pythonの技術は必要。
またHTMLの基本的な構造に関して理解しておく必要があります。
HTMLでは、headタグやbodyタグなど様々なタグを用いて階層構造をとります。
そのタグの中にidやクラスを記述することで様々な表現が可能になります。
そのid・タグ・クラスを指定してスクレイピングを行うため、HTMLを理解しておくことが大事です。
HTMLをコーディングするわけではないため、技術はそれほど必要ないが、ソースを読んで理解できるレベルの知識が必要ってことなのか。う~ん
② スクレイピングの注意点
1つ目は、スクレイピングが禁止されていないか確認する事。
便利な技術だけに悪用される可能性もある。
そのため、WEBサイトによってはスクレイピングを禁止している場合があります。
2つ目は、スクレイピングによって負荷をかけないようにする。
スクレイピングを頻繁に行うと、サーバーに負荷をかけることになります。
そのため頻繁にリクエストを送らないようにスリープメソッドを使用してリクエストの時間を空けるようにしないとダメ!!
③ 自動書記(ヨハネのペン)を作ってみる
Colaboratoryをはじめて使ってみた!これはすごい!
詳しい使用方法は、検索したら沢山出てきます。
エンジニアさんは、検索能力も必要だと書いてありました。
※初学者は規則だけは遵守する。
④ ライブラリのインポート
Requests
HTTP通信ライブラリ
webページから情報や画像を簡単に取得できる
Beautiful Soup4
HTML・CSSを解析、抽出する
sleepメソッド
サーバーに負荷をかけてはいけないのでインポート
よくわかってないので、手当たり次第に使用
※初学者は規則だけは遵守する。
⑤ コード書いてみる(1)
初めにこれをインストールしないとダメでした…
エラーと格闘すること数時間…
次にこれです、サーバーに負荷がかかるので
sleep入れないとダメって色々なサイトに記載がありました。
beautifuSoupはColaboratoryに標準搭載なので、インポートだけでOKです!
これで使えるようになってます。
本当かよ?って思いますが、実際に動かすと構文がバァン!と出てきます。
⑥ コードを書いて見る(2)
webページから情報を抜き出す。
url=は抜き出し先のURLを指定する。
req=はRequestを使って指定したWebページのデータを抜き出す。
date=はBeautifulSoup4を使って複雑な構造のHTMLデータを解析する。
index=はBeautifulSoup4で目印を元に抽出するはずなんですが、print関数でも表示されない(選択したサイトが適合してないのかな?)なので共にコメントアウトしてきました。
listtext=は、当初「listtext = index.gettext()」だったんですが、アトリビュートがなんちゃらかんちゃらエラーが発生して悩みました…あ~もうっ!!!
indexをsoupに変えたら蘇りました!奇跡です。
選定したサイトによって実行できる、できないが変わってくるので1日かけて色々調べてやっとできました。
HTMLの知識がないとコードの意味を理解できないので苦戦しました。
初学者はHTML・CSSから入ったらダメって記事がたくさんあったからPython学習してるのにさぁ~
あっ!sleepも使いどころが不明だったので、ここだなって思う所に勘で入れときました、エラーは出てませんのでOK!
⑦ txtファイルへ書き出す
file = に、一つ目の引数には、書き出すテキストファイルのパスを記述。
2つ目の引数には、writeのwを指定する。
これで書き出すテキストファイルが存在しないときは新規作成、存在するときは上書きされる。
file.writeメソッドでテキストの中身をテキストに書き込みます。
最後にfile.closeメソッドでファイル操作を終了します。
⑧ 完成したらこんな感じでした
実際にやって動かなくても試行錯誤してみてください!
ご覧いただきありがとうございました。
それではまたお会いしましょう!
あなた
職業:雑学者Lv2
スキル:清潔(Lv1)習得
スキル:プログラム(Lv1)習得
知力:2 力:1
体力:1 防御:1