こんにちは、おかてんです。
今回はWebスクレイピングを学びたいなと思い、Dai(@never_be_a_pm)さんがnoteで提供している「Pythonによるスクレイピング①入門編 ブログの記事をCSVにエクスポートする」をやってみたので簡単な概要と感想を書きました。
目次
Webスクレイピングとは?
そもそもWebスクレイピングとはどのようなものでしょうか?
簡単にいうとWeb上のホームページなどからプログラミングにより文字などの情報を取ってくることです。
皆さんが普段何気なく見ているサイト上にはあらゆる情報が詰まっています。Webスクレイピングはその中から自分の欲しい情報だけを取りたいと思ったときに使えます。
では、Webスクレイピングができればどのようなことができるでしょうか?
例えば、以下のようなことができます。
- 日々更新される情報を自動的にダウンロード
- サイトから適切な情報を取って、分析
前者だと、日々更新されるサイト内の情報を自動で通知してくれたりします。例えば、Amazonなどのネット通販で在庫の有無を確認したりもできます。
後者だと、市場調査などに使うことができます。Web上の商品の製品情報、価格、レビュー、ニュース情報などあらゆる
このようにWebスクレイピングにより効率的なデータ集めをすることができます。
Webスクレイピングの需要
僕がなぜWebスクレイピングを学ぼうと思ったかというとプログラミングを使った副業の案件としてWebスクレイピングの需要があったからです。
政府の副業解禁の流れで会社員で副業をした人はは増えていると思います。ただ、何をすべきかわからない、会社で残業をしている方がお金をもらえるのではないかと思っている人も多いのではないでしょうか。
そこで、副業としてプログラミングに目をつけてみました。プログラミングは高単価でかつリモートでも働けるというので、副業に最適だなと思います。
スクレイピングに関する仕事をCrowdWorksなどで探してみるとけっこうありましたね。CrowdWorksでスクレイピングと検索すると930件も出てきました。需要が多いですね!
Webスクレイピングに関する案件を探すと結構ありますね。僕はPythonはある程度かけるのですが、Webスクレイピングはやったことがなく、勉強してから応募しようと考えました。
概要
では、Webスクレイピングの需要がわかったところで、肝心の内容について簡単に紹介したいと思います。
Daiさんが提供しているnoteの最終目標としてブログなどのサイトから記事の名前とそのURLを取得し、csvファイルをダウンロードすることです。では簡単な概要や感じたことをご紹介します。
この講座を対象にしている人
この講座を対象にしているのは以下のような人です。
- Pythonの基礎レベル・HTML、CSSのことについて理解できている人
- Pythonの基礎は分かるけど、実践的なことをやったことがないので、何かやってみたい人
- データの自動収集に興味がある人
個人的には特に2の人にオススメですね。プログラミングを学ぼうと思って始めてみて、基礎は身につけたが何をやっていいかわからない人は多いと思います。その点、Daiさんのnoteでは実践的で需要があるスキルが身につくし、何よりプログラミングしてて楽しい内容ですね。
やはりプログラミングは勉強するだけでなく、何かを作る楽しさというところに醍醐味があるので、それを感じることができます!
環境構築が必要ない
この記事ではプログラミングする上での環境構築は一切必要ありません。プログラミング初心者やPythonを使ったことがない人にとって環境構築って難しいし、面倒ですよね。
しかし、今回はGoogle Colaboratoryという無料サービスを使うのでその心配はありません。
Google Colaboratoryはネットワーク上ですでに構築された環境を使うので何も用意する必要はないんですね。
各種ライブラリの使い方を勉強できる
Pythonを書く上でライブラリを使えるようになるのは非常に重要です。ライブラリとは簡単にいうと「色んな人に使われる可能性のあるプログラム」を自分でプログラミングしなくても使えるように簡略化されているものです。なので、難しいプログラミングをしなくても、簡略化されたライブラリを組み合わせることで色んなことができちゃうわけです。
特にPythonはライブラリがかなり豊富で、それをいかに使いこなすかでうまくプログラミングできるかが問われます。
このnoteでは例えば、requestsと言われるWebからデータをダウンロードできるライブラリを取り扱います。Webからダウンロードすると思うと難しく思えますが、ライブラリを使うと実は数行で書けちゃうんですね。このnoteでは他のライブラリも取り扱っていて、それをどのように使いこなすか?を実践で学ぶことができます。
本日はおかてんなりをWebスクレイピング
noteではDaiさんのブログサイトを対象にしていましたが、このブログ「本日はおかてんなり」もWebスクレイピングしてみました!プログラムはこんな感じです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
import pandas as pd from bs4 import BeautifulSoup import requests from google.colab import files url = "http://okatenari.com" response = requests.get(url).text soup = BeautifulSoup(response, 'html.parser') tags = soup.find_all("article",{"class":"post-list"}) columns = ["name", "url"] df2 = pd.DataFrame(columns=columns) for tag in tags: name = tag.a.get("title") url = tag.a.get("href") se = pd.Series([name, url], columns) #print(se) df2 = df2.append(se, columns) filename = "result.csv" df2.to_csv(filename, encoding = 'utf-8') files.download(filename) |
ブログのhtml構造がDaiさんのものと少し違っていたのですが、自分のブログのhtmlの中身を確認すればすぐにできました。
ちなみにGoogle ColaboratoryでPythonを書くとインデントは2文字でいいんですね。
スクレイピングしてみた結果はこんな感じ。
見事にできました!こうやって自分で何かを作り上げると達成感が得られますね。やはりプログラミングにはこういう楽しさがあります。
さいごに
Webスクレイピングって意外と簡単にできました。僕はPythonの使用経験はありますが、Webスクレイピングやhtmlに関する知識はほとんどなかったのですが、やっているうちに理解ができました。
今回はWebスクレイピングの基礎ということで、簡単な使い方だけでしたが、他にもまだまだ応用はできそうです。
Webスクレイピングをもっと極めようと思ったので、Daiさんのnoteをまとめて買っちゃったので、またブログに書こうと思います。次回はこちらを試してみます!