
今回はPythonでWebスクレイピングしてCSVに出力する方法について紹介していきます。
Webスクレイピングを使えば好きなサイトの情報を収集できたり、Yahooニュースなどのサイトでスクレイピングをして最新の情報を収集できたりと便利なことばかりです。
是非PythonでWebスクレイピングができるようにこの記事を最後まで読んで頂ければと思います。
コードはちゃんと解説していきますが、最後に全体のソースコードも載せておくので、スクレイピングだけしたいという方はコピペでも大丈夫です。
Pythonは近年注目されている人工知能の分野でも活躍する言語ですのでぜひ覚えていってください。
Pythonを扱っているプログラミングスクールをお探しの方は、転職サポートやオンライン特化が魅力的なテックアカデミーがおすすめです。
ライブラリについて
まずは必要なライブラリをインストールします。
Beautiful Soupをインストール
pip install beautifulsoup4
Requestsをインストール
pip install requests
次にPythonファイルを作成して、必要となるライプブラリをインポートしていきます。
from bs4 import BeautifulSoup
import requests as req
import datetime
import csv
以下では、使っているライブラリの説明をしてます。
ライブラリ | 説明 |
---|---|
BeautifulSoup | HTMLなどからデータを抽出する |
requests | HTTP通信などができる |
datetime | 日時操作ができる |
csv | CSVの操作ができる |
URLの取得とHTMLのパース
次はURLの取得とHTMLのパース(HTMLなどの形を整えること)をしていきます。
ファイルに以下のコードを書き込んでみましょう。
url = '任意のURL'
html = req.get(url).content
soup = BeautifulSoup(html, 'html.parser')
変数「url」には任意のURLをいれて変数「html」にURLを取得する構文を入れています。
変数「soup」ではHTMLを整える構文を入れています。
- 取得したいページのURLを決める
- URLを取得してくる
- 取得したURLのHTML文を整える
情報出力の下準備
次はCSVへ情報を出力する下準備をします。ファイルに以下のコードを書き込んでみましょう。
Fname = datetime.date.today()
Fname2 = str(Fname) + '.csv'
tags = [tag.text for tag in soup.find('任意のタグかクラス').find_all('任意のタグかクラス')]
このコードについて説明すると、まずでCSVファイル名作成用にdatetime.date.today()で日付けを取得し変数「Fname」に代入します。
その後str(Fname) + '.csv'で作成するCSVファイル名を指定します。
その下のコードで変数「tags」にHTMLを整えたコードから任意のタグやクラスを繰り返し処理で取得して、配列として代入しています。
- ファイル名を決めるための日にちを取得
- ファイル名を作成
- HTML文の中から指定したタグやクラスを繰り返し処理で取得
取得した情報をCSVに書き込み
最後に取得した情報をCSVに書き込んでいきます。
こちらのコードを書き込んでみましょう。
with open(Fname2, 'w') as f:
writer = csv.writer(f, lineterminator='\n')
for tag in tags:
writer.writerow([tag])
1行目では書き込み用でCSVファイルを開き、2行目でCSVファイルの書き込み用のファイルと改行コードを指定します。
その下の3,4行目で配列として取得した「tags」の情報分繰り返し処理で1行ずつ書き込んでいきます。
- CSVファイルを書き込みようで開く
- 改行コードを指定
- 繰り返し処理で1行ずつ取得してきた内容を書き込み
全体のソースコード
from bs4 import BeautifulSoup
import requests as req
import datetime
import csv
url = '任意のURL'
html = req.get(url).content
soup = BeautifulSoup(html, 'html.parser')
Fname = datetime.date.today()
Fname2 = str(Fname) + '.csv'
tags = [tag.text for tag in soup.find('任意のタグかクラス').find_all('任意のタグかクラス')]
with open(Fname2, 'w') as f:
writer = csv.writer(f, lineterminator='\n')
for tag in tags:
writer.writerow([tag])
今回は以下の記事をスクレイピングしました。
Pythonの基本構文についてまとめているので合わせて読んでみてください。
今回はPython入門としてのPythonの基本構文について解説していきます。
Pythonを覚えておけば機械学習やwebスクレイピング、画像処理など他にも様々なことに役立てることができます。
Pythonは近年注目されている人工知能の分野でも活躍する言語ですのでぜひ覚えていってください。
~長いので省略~
ここまでPythonの基本構文について紹介してきました。
条件分岐や繰り返し処理は特によく使う構文なのでぜひ覚えてほしいです。
最初のうちは中々コードの書き方が覚えられないと思うので、この記事をブックマークしていつでも見れるようにしておくことをお勧めします。
これからもPythonについての記事を上げていくつもりですのでぜひそちらもご覧ください。
ここまでPythonでWebスクレイピンをする方法について解説してきましたが、Webスクレイピング作成はPython初心者の学習方法としては非常におすすめなのでぜひ自分でも作ってみてください。