今回が中級編の最後の記事となります。
スクレイピングしたデータをエクセルにまとめる方法を解説します。
エクセルにまとめれば、そのデータを社内で活用することができます。
本記事では最初にエクセルの基本操作方法を解説し、それからスクレイピング方法についてご紹介しましょう。
OpenPyXLモジュールをインストール
Pythonでエクセル操作を行うには、OpenPyXLモジュールを使う必要があります。
OpenPyXLモジュールは標準ライブラリではありません。
そのため、pipコマンドを使って、インストールする必要があるのです。
コマンドプロンプトに、以下のように記述しましょう。
pip install openpyxl
これで、OpenPyXLモジュールがPythonで使えるようになります。
Pythonでのエクセル基本操作
Pythonでのエクセル基本操作方法を解説します。
ここでは、以下の2つに分けてやり方を説明しましょう。
- エクセルファイルを新しく作る
- エクセルファイルにデータを出力する
エクセルファイルを新しく作る
まず、エクセルファイルを新しく作る方法を解説します。
○コード例
import openpyxl
wb = openpyxl.Workbook()
wb.active.title = "スクレイピング結果"
wb.save("text.xlsx")
wb.close()
○実行結果
openpyxlモジュールを使うために、import文を冒頭に記述してください。
openpyxlモジュールにはWorkbookメソッドというものがあります。
これは、エクセルファイルを開くためのものです。
その後、active.titleによって、エクセルシートのタイトル名を指定します。
そして、saveメソッドでエクセルファイルを作成します。
最後にcloseメソッドでエクセルを閉じることもお忘れなく。
これで、「スクレイピング結果」というエクセルシートがあるファイルが作成できました。
エクセルファイルにデータを出力する
続いて、エクセルのシートにデータを出力する方法を解説します。
○コード例
import openpyxl
wb = openpyxl.Workbook()
sheet = wb.active
sheet.title = "スクレイピング結果"
sheet["A1"].value = 'Hello World'
wb.save("text.xlsx")
wb.close()
○実行結果
シートにデータを書き込む場合、セルを指定する必要があります。
今回は「A1」にデータを書き込みましょう。
「A1」に書き込む場合は、「sheet[“A1”].value」というように記述します。
その後saveメソッドでエクセルを保存すれば、書き込み完了です。
これで「A1」に「Hello World」と書き込みされました。
スクレイピング結果をエクセルに保存する
それでは、スクレイピング結果をエクセルに保存する方法を見ていきましょう。
○入力データ
business
○コード例
import requests
from bs4 import BeautifulSoup
import openpyxl
# ニュースのカテゴリを入力させる
category = input("ニュースのカテゴリは?:").rstrip()
# Webページの情報を取得する
site_data = requests.get("https://news.yahoo.co.jp/categories/" + category)
soup = BeautifulSoup(site_data.content, 'html.parser')
# エクセルを開く
wb = openpyxl.Workbook()
sheet = wb.active
sheet .title = "スクレイピング結果"
# シートの番号用変数
cnt = 1
# 特定のクラスだけを抜き出して表示
for a in soup.select(".sc-kIPQKe.eMCmdt"):
data = str(a.string).rstrip()
# Noneを除外する
if data == "None":
continue
# シートの番号を決める
sel1 = "A"+str(cnt)
sel2 = "B"+str(cnt)
sheet[sel1].value = data
sheet[sel2].value = a.get("href")
cnt += 1
# エクセルにデータを保存する
wb.save("text.xlsx")
wb.close()
○実行結果
【中級編4】PythonでWebページをスクレイピングしよう、のプログラムをベースに、エクセルに書き込めるようにしました。
まず、Workbookでエクセルを開いています。
そして、for文の中で、エクセルの中にスクレイピング結果を入力しています。
A列にはニュースタイトル、B列にはニュースのリンクを記入していますね。
cnt変数を使い、1回ループするごとに、書き込む位置がA1、A2、A3……となるようにしています。
記入後は、saveメソッドでエクセルにデータを保存しています。
実行後に「text.xlsx」というエクセルファイルに、スクレイピング結果が出力されているか、確認しましょう。
これで、スクレイピング結果をエクセルにまとめられました。
まとめ
本記事では、Pythonでスクレイピング結果をエクセルにまとめる方法を解説しました。
エクセルの基本操作および、スクレイピング結果を記入する方法が、お分かり頂けたかと思います。
これで、スクレイピングの基礎は習得できたことになります、お疲れさまでした。
スクレイピングができれば、もうPython初心者は脱出できたと言っても、過言ではありません。
後は、プログラミングスクールなどに通って、現場で通用するレベルの力を身につけるだけです。
これからもPythonの勉強を頑張ってくださいね!