PythonでスクレイピングしたデータをCSVに保存する方法
【3STEPで解決】
Webスクレイピングの基本その②
STEP① : スクレイピングで、データを抽出する(※いつもどおり)
STEP② : ヘッダー部分を作成する
STEP③ : 抽出したデータを、CSVに書き込む
補足 : 作成したCSVファイルの中身を、Pythonで確認する(おまけ)
今回はタレント辞書に載っている「20代の女優一覧」を例に紹介していきます。
タレント辞書URL:https://talent-dictionary.com/
具体的に、サイト内で以下のデータをスクレイピングして、最終的にCSV出力していきます。
・名前
・職業(モデル、女優、タレント)
・年齢
・詳細ページのURL
それでは順番に見ていきましょう。
STEP① : スクレイピングで、データを抽出する(※いつもどおり)
#1.今回必要になる「名前、職業、年齢、詳細ページURL」は、以下のコードでスクレイピングできます。
以下のコードをコピーするだけ
※スクレイピングは、PythonやBeautifulSoupとScrapyに慣れるだけでOK
※もしスクレイピングの不安のある方は、直接、管理人にきいてください!最近の管理人のいる場所(チャンネル)
STEP② : ヘッダー部分を作成する
次にCSVを作成するためのヘッダー部分を作成します。
なぜヘッダーを作成するのかというと、取得したデータをそのままCSVに書き込むと、各列にどんなデータが格納されているのか分からないからです。
人名や職業なら見れば分かるかもしれません。
でも年齢とかURLについては、やはり説明がないと意味が通じません。
そのため、スクレイピングで取得したデータをCSVに書き込むときヘッダーを作成してあげます。
#2.ヘッダー追加のコードをコピー
これでヘッダーを作成できました。
STEP③ : 抽出したデータを、CSVに書き込む
最後にスクレイピングしたデータをCSVに書き込んでいきましょう。
先ほど準備したヘッダー情報を先に定義しておいて、そのあとでスクレイピングしたデータをCSVに書き込みます。
#3.以下をコピー
上記でやっていることをまとめたのが以下です。
・With(ステートメント)を使って、CSVファイルを開く
・ファイル書き込みするためにwriter = csv.writer(f)でインスタンスを作成する
・forループ前でヘッダーだけ書き込んで、forループで中身を書き込んでいく
・Withステートメントで開くCSVファイルは、そのファイルが存在しなければ新しく作成されます。
つまり、今回でいえばactors.csvが新しく作成されるということです。
もしactors.csvが既に存在するなら、元々CSVに書かれていたデータが消えてしまいますので注意しましょう。
補足 : 作成したCSVファイルの中身を、Pythonで確認する(おまけ)
作成したCSVの中身を、Pythonを使って確認しておきましょう。
CSVの読み込みはPandasを使ってデータフレームに変換してしまうのが手っ取り早いです。
#4.以下のコードをコピー
上記のコードを実行すると出力結果が出てくるはずです。
きっとしっかりとCSVファイルを作成できていますね!以上です。
おさらい
ここからも全コピペのみで設定できます
CSV書き出し
エクセルへ