スクレイピングって初心者には、難しそうとお思いの方はいらっしゃいませんか?
実は、そんなこともないんですよ。
そこで、この記事ではPython初心者の方でも簡単に出来るスクレイピングの方法を解説します。
スクレイピングの中でも、もっともよく使用するテーブルデータをWebから取得する方法を解説します。
今回はスクレイピングに関して解説します。
初心者の方でも簡単にできる方法になっていると思います。
スクレイピングとは?
スクレイピングとは、データを抽出することを指します。特にWebページからスクレイピングすることを「Webスクレイピング」と呼びます。この記事では、Webスクレイピングについて解説します。
初心者でも出来るスクレイピングの方法
プログラミング言語Pythonを使用することで、以下のライブラリが無料で使用できます。
- Requests:Webサイトの情報取得や画像の収集を初心者でも簡単にできるツール
- beatifulsoup4:HTMLやXLMから初心者でも簡単にデータを抽出できるツール
そこで、まずは以下二つのライブラリをインストールしましょう。
インストール方法
windowsの場合は、コマンドラインで、Mac の場合はターミナルで以下のコマンドを実行することで、インストールが可能です。
Requests
pip install requests
beautifulsoup4
pip install beautifulsoup4
データの抽出方法
今回は、もっとも使うであろうWebサイトのテーブルデータの抽出方法を解説します。テーブルデータとは、エクセルのように二次元配列のデータを指します。そこで以下のサイトのテーブル情報をスクレイピングして解説します。
競馬の出馬表をWebスクレイピングするよ!
import requerts
from bs4 import BeautifulSoup
二つのライブラリをインストールします。url = requests.get(urlName)
をsoup = BeautifulSoup(url.content, "html.parser")
にキャストして、html.parser
を取得します。
import requests
from bs4 import BeautifulSoup
urlName = "https://business.nikkei.com"
url = requests.get(urlName)
soup = BeautifulSoup(url.content, "html.parser")
以下は、出力結果です。soupの中身を確認し、tableクラスを抽出します。これはホームページを構成する部品です。これらの部品たちから、tableのみを抽出します。
tableクラスとは、webサイトでいうとこの表を指します。
なのでこの中身を抽出します。
確認すると、<tr>で改行、<td>でセルの区切りを表現していますね。
そこで、以下のように記述することで、tableタグ以下を<tr>で改行、<td>でセルの区切ります。replace("\n","")
で\nの改行の文字を削除します。これがないと、\nが残り視認性が悪くなります。
def table(soup):
# セレクタ(タグ:table、クラス:test)
table = soup.find("table")
trs = table.findAll("tr")
data_files = []
for tr in trs:
data = []
# 1行ごとにtd, tr要素のデータを取得してCSVに書き込み
for cell in tr.findAll(['td', 'th']):
data.append(cell.get_text().replace("\n",""))
data_files.append(data)
return data_files
find_allとfindの使い分けは以下です。
タイプ | すべての要素をリストで返す | ひとつだけ要素を返す | 引数(検索条件の指定) |
---|---|---|---|
find系 | find_all() | find() | 要素名, 属性指定(キーワード引数) |
そしてそれをpandasのデータフレームに変換します。
import pandas as pd
df = pd.DataFrame(table(soup))
print(df)
印の列は、Webサイトのでユーザ入力を引数として当てはめるので、以下では、エラーとなっています。
スクレイピングをもっと学びたい
スクレイピングはまだまだ奥が深いです。もっと使いこなしてみたいという初心者のには、こちらの本をおすすめしています。プログラミング初心者の方にもわかりやすく説明されています。本書は簡単なサンプルを作りながら、会話形式でスクレイピングのしくみをまなぶ書籍です。
コメント
[…] Python 初心者でも出来るスクレイピングの方法スクレイピングって初心者には、難しそうとお思いの方はいらっしゃいませんか?実は、そんなこともないんですよ。そこで、この記事では […]
[…] Python 初心者でも出来るスクレイピングの方法スクレイピングって初心者には、難しそうとお思いの方はいらっしゃいませんか?実は、そんなこともないんですよ。そこで、この記事では […]
[…] Python 初心者でも出来るスクレイピングの方法スクレイピングって初心者には、難しそうとお思いの方はいらっしゃいませんか?実は、そんなこともないんですよ。そこで、この記事では […]