【完全版】Pyhonのスクレイピングで1日を26時間にする
2019.06.26
Pythonのスクレイピングでできることは、「収集」と「整理」、そして整理された情報から「分析」ができます。例えばこんなもの。
- 必要なキーワードに合致する情報を「収集」し、「整理」してCSVファイルにまとめる
- 特定のウェブサイトから必要な情報を「収集」し、「整理」してCSVファイルにまとめる
- SNSのリツイート数やコメント数を一覧で「取得」し、多い順に「整理」できる
日々の面倒な業務から、全て解放してくれるのが、pythonスクレイピングです。
スクレイピングとは
「収集」と「整理」を併せ持つ機能です。
似たような言葉で「クローリング」とありますが、クローリングは「収集」の機能を持つ言葉で、似ているようで異なります。
pythonの優れている点が、非常に簡単なコードで複雑なスクレイピングができるという点です。
pythonのスクレイピングの活用事例
日々のルーティーンワークの業務効率化や、データ収集・分析などのアナリストに最適な方法がpythonのスクレイピングです。
イメージしやすいように、実際にpythonのスクレイピングが活用されるかをみていきます。
Amazonや楽天の必要な商品情報の取得
物販やせどりをやっている方であれば、商品のアラート機能を使っていると思います。
商品と金額を指定して、条件に合致した商品が出品された場合に通知してくれる機能です。
そんな通知機能を、CSVファイルなどにダウンロード可能な状態で使用することができます。
SNSのバズ情報のデータの可視化
SNS運用はフリーランスに必須なスキルですが、できればバズる投稿をしたいと思います。
そんな時に、pythonのスクレイピングでは、バズったツイートを取得し、一覧で可視化することができます。
営業リスト取りなどのルーチーン業務などの自動化
日々、営業先の情報を検索し、コピーアンドペーストして、CSVに貼り付けるという誰にでもできるルーティーンワークを行なっていると思います。
これらの創造性のない誰にでもできるルーティーンワークをpythonでスクレイピングすれば、全て自動で行なってくれます。
夜に設定して、朝に起きたら営業リストが自動で生成されているということです。
pythonのスクレイピングを学ぶ上で必要な知識
スクレイピングの基本は、マークアップ言語と呼ばれる情報からデータを取得します。
具体的には下記の流れになります。
python(サーバーサイド言語)でスクレイピング
↓
HTML・CSS(マークアップ言語)から情報取得
↓
必要な情報を取得
上記の流れに沿って、pythonのスクレイピングを行う上で最低限必要な知識は下記の2つです。
- HTML / CSS
- Python
HTML / CSS
マークアップ言語と呼ばれ、プログラミング言語とは異なる性質を持ちます。
[link url=”https://nakazawakan.com/not-programming-html-css/”]
スクレイピングは取得するデータを指定するのですが、取得する際に「ここから取得する!」と、指定する際にマークアップ言語の知識が必要になります。
Python
Pythonはプログラミング言語の中で新しい種類のため、非常に簡単にコードを書けることが特徴です。
URLにアクセスするなど、サーバーサイドの役割を果たします。
JavaScriptは覚えるのは大変なのですぐには必要ない
JavaScriptは覚えたら非常に便利な言語ですが、PythoとHTML・CSSがあればスクレイピングは可能なので、スクレイピングが目的であればすぐには不要です。
ただ、覚えておいたほうが便利なのは間違い無いので、時間がある時にでも勉強してみてください。
pythonのスクレイピングを始める前にすべきこと
それでは、実際にpythonでスクレイピングを始めるために、開発環境を整えていきます。
今回は、「Jupyter Notebook」というブラウザ上で動作を確認できる環境を使います。
インストールの方法は、「 Jupyter Notebook(IPython)のインストールと始め方」で確認してください。
pythonのスクレイピングの2つの方法とサンプルコード
開発環境を整えたら、ライブラリを活用してスクレイピングをしていきます。pythonのスクレイピングで活用できるライブラリは下記の3つです。
- Requests・Beautiful
- Selenium
- Scrapy
ライブラリとは、Pythonプラグラムに初めから埋め込まれているプログラムです。ライブラリを使うと、数行で複雑な機能を呼び出すことができます。
Requests・Beautifulライブラリを使う
最も簡単で、最も有名なライブラリを使った方法です。サンプルコードは下記の通りです。
import requests
from bs4 import BeautifulSoup
# 特定のURLを指定
url = 'https://nakazawakan.com/'
# マークアップ(html)を取得
html = requests.get(url)
soup = BeautifulSoup(html.content,"html.parser")
# titleタグ内のテキストを取得
title = soup.find("title").text
# 上記を出力
print(title)
# 出力結果
# カプリチョーザな、たびんちゅう。 | 陸上で全国大会出場して、ラクロスで世代別日本代表になって、就職せずにホッカイロ売りを始めた、旅好きな中澤寛のブログ
Seleniumライブラリを使う
次に、Seleniumライブラリを使用したスクレイピング方法です。
少し複雑なので、詳細は「 PythonでSeleniumを使ってスクレイピング (基礎)」で確認してください。
基本的には、Requests・Beautifulライブラリを活用したスクレイピングで問題ないです。
Pythonのスクレイピングを行う上での注意点
まず、スクレイピングは相手のプログラムに負荷を書ける作業です。そのため、スクレイピングをすること禁止するURLもあります。
日本でも、実際にスクレイピングのしすぎで 「岡崎市立中央図書館事件(Librahack事件)」という事件も起こりました。
「相手に迷惑をかけている」という点を考慮し、Webスクレイピングの注意事項一覧は最低限守るようにしましょう。
実際に僕がPythonの勉強をする上で役に立った教材
pythonはまだまだ新しい言語なので、他のプログラミング言語と比べたらインターネット上の情報は少ないです。
そこで、僕が実際に行なった勉強方法をご紹介します。
あらかじめお伝えしておくと、最も効率的な学習方法は「腕のいいPythonエンジニア」を見つけることです。家庭教師になってもらって教えてもらう方法が、最も効率的です。僕は見つけることができなかったので、独学で勉強しました。
本で体系的に抜け漏れなく学ぶ
体系的に学ぶという点において、本の優位性は高いです。
僕が実際に購入した本は2冊です。(後者は非常に難しいので、初心者にはオススメしません。)
[itemlink post_id=”10882″]
[itemlink post_id=”10883″]
オンラインプログラミング学習で勉強する
ウェブサービスで、月額1,000円程度でプログラミングのオンライン教材が販売されています。
無料でも一定までは勉強できるので、まず聞き流す程度で勉強してみることをお勧めします。なんとなく聞くだけでも十分です。
- PyQ – 本気でプログラミングを学びたい人のPythonオンライン学習サービス
- Aidemy 人工知能プログラミングを
10秒ではじめよう - ドットインストール – 3分動画でマスターできるプログラミング学習サービス
- Progate
| プログラミングの入門なら基礎から学べるProgate[プロゲート]
まとめ
pythonを習得すると、1日のルーティーンワークの中で、最低でも30分は時短することが可能です。
誰でもできる仕事はpythonのスクレイピングに任せ、自分にしかできないことに注力しましょう。