見出し画像

次なるステージでスクレイピングに挑戦してみよう

どうも、じぇいかわさきです。


皆さんはスクレイピングって知っていますか?インターネット上から、必要な情報を集めてくるやつです。


マトリックスの最初に、ネオが商売としてやっていた情報収集がスクレイピングですね。


このスクレイピングをマスターすると、ネット上に有る情報を自動で集めてくることができるので、データ解析などに役立つんですね。


データ解析ができるようになると、Twitterでバズっているツイートのみを集めてきたりして、どうすればバズるツイートができるかなんて分かるかもしれません。


なんとなく、ワクワクしてきませんか?




Pythonはインターネットで最大の効果を活気する

画像1

Pythonはネットにアクセスするライブラリーが充実
簡単に情報を収集できるぞ





クローリングとスクレイピング


みなさんの中には、ブログなどを一生懸命にやっている方もおられると思いますが、クローリングって聞いたこと有りませんか?


そう、あのGoogleが新しくできたページなどを巡回して、Indexファイルを作って蓄積していく時に、最初に行うのがクローリング。


正確に言えば、クローラなのかもしれませんが。


クローラをウィキペディアで調べてみると以下のように書かれています。

クローラ(Crawler)とは、ウェブ上の文書や画像などを周期的に取得し、自動的にデータベース化するプログラムである。「ボット(Bot)」、「スパイダー」、「ロボット」などとも呼ばれる。
引用:ウィキペディア


皆さんに一番馴染みが深いのは、Googlebotじゃないですかね。



さて、スクレイピングとは、クローラが集めてきたデータを必要な部分を解析して取り出すのが、スクレイピングなんです。


簡単に言うと、Yahooなどのニュースサイトにアクセスして、特定のジャンルから決められたキーワードのデータを収集してファイルとするまでの一連動作のことです。


このプログラムを作れば、ネット上で必要なキーワード情報を探してファイルに落とすことができる。

んだかスパイ映画のようでもあるし、ハッカー映画のようでもありますね。


しかし、ハッカーなどとの違いは、サーバーに不正アクセスしてデータを盗み出すのではなく、公開されているWebサーバーのホームページからデータを抽出してくるということです。


論文を書いたりするには非常に便利なプログラムですね。





実際に簡単なものから作り出してみた


実は自分も半信半疑なので、本当にWebページから必要なキーワードデータが取り出せるのか、自分でプログラムを書いて動作させてみた。


プログラムを書いたと行っても、Pythonを初めてまだ1週間程度なので、自分でオリジナルのアプリなんか作れるわけがない。


今回もおなじみの参考書を使って勉強をしていく。


今度は一歩進んで、Python2年生 スクレイピングのしくみと言う本を使っていく。



まあとにかく実際にやってみて驚いたのは、コードの行数が少なくても、目的のことはほぼできるという事。


これは例の、モジュールが充実していると言う事を物語っていますね。


まず参考書の最初から始めるが、サンプルサイトからデータを抜き出すところが最初の一歩になている。

コードとしてはこんな感じ


import requests
from bs4 import BeautifulSoup
load_url = "https://www.ymori.com/books/python2nen/test2.html"
html = requests.get(load_url)
soup = BeautifulSoup(html.content, "html.parser")
for element in soup.find_all("li"):
   print(element.text)

これを実行すると、こんな感じでサンプルサイトからデータを抜き出す。


画像2


初めてスクレイピングをやってみたので、サンプルとはいえ非常に感動した。


サンプルページはこんな構成でできており、この中でテキストデータだけを抽出してきているので、さっきの結果のようになるんだ。


画像3


すごいと思わないかい。


ただ、この場合には第1章、第2章同時に抽出してしまっており、かつサブタイトルは除いた内部のリストのみを抽出しているので、どちらの章かわからないよね。


今度は第2章の中身だけ取り出してみよう。コードは以下の通り。

import requests
from bs4 import BeautifulSoup
load_url = "https://www.ymori.com/books/python2nen/test2.html"
html = requests.get(load_url)
soup = BeautifulSoup(html.content, "html.parser")
chap2 = soup.find(id="chap2")
for element in chap2.find_all("li"):
   print(element.text)


検出するための条件は、タグとタグに関わるオプションを使っているのがコードで分かるね。

例えば、第2章はidでchap2となっているので、対象をchap2とすれば良いんだよね。

すると結果はこの通り。


画像4


たった8行のコードでこんな事ができるんだ。



コードもそうだけど、すごいのはこのWebを収集するrequestsというモジュールと、HTMLを簡単に解析するBeautifulSoupという2つのモジュール。


この2つのモジュールにより、簡単にWebデータを入手しHTMLから中身を解析することができてるんです。


こんな事がド素人にもできるPythonですごいと思いますよね。


次には、実際にYahooのページを使ってデータを取得してみたいと思います。

楽しみにしててね。





ネットから情報を集めるにはスクレイピング まとめ

どうですか、今回はネットから必要なデータを集めてくるスクレイピングの基礎の部分について紹介しました。


requestsとBeautifulSoupの2つのモジュールを使うだけで、あっという間に集めて解析ができるって、すごいの一言ですね。


他のプログラミング言語で同じようなことをやろうとしたら、一体全体どうなるんだろうって考え込んでしまいます。


しかし、Pythonを使えば、習い始めて1週間でも簡単に基礎はできてしまうんですよね。


やはり、Pythonはネット時代に最強のプログラミング言語ではないかと、改めて思いました。


こんな楽しいことができるので、一緒にPython学んでいきませんか。


じぇいかわさきです。生産技術者として35年、今まで培った経験とスキルを元に、ものづくりに関わる世の出来事に対して思ったことをホンネで書いてます。ノウハウやアイデアもありますよ。 また写真も全力で撮っています、気に入った写真があればサポートや感想をぜひお寄せください。