こんにちは、三橋です。
弊社では、ある業者の複数社のホームページにある情報をチェックするスクレイピングツールを作成しております。
今回スクレイピングがどのようなものなのか調べてみたらPythonで出来ることが分かったので調べて実施してみました。
スクレイピングとは
スクレイピングとは、Webページからデータを抽出するプロセスです。これは、ウェブスクレイピングとも呼ばれます。スクレイピングは、Webページからテキスト、画像、動画、価格情報、レビューなど、様々な情報を抽出することができます。スクレイピングには、プログラミング言語を使用してWebページのHTMLコードを解析し、必要なデータを抽出することが必要です。
Pythonで使用できる主なスクレイピング用ライブラリ一覧
- BeautifulSoup4
- Requests
- Selenium
Python環境でBeautifulSoup4を使用できるようにする
pipコマンドでBeautifulSoup4をインストールします。
pip3 install beautifulsoup4
タグで指定してデータを抽出する
下記ソースを実行し「タイトル: Home - 株式会社クオリアシステムズ
」と表示されれば成功です。
import requests
from bs4 import BeautifulSoup
url = 'https://qualias.jp/'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
#タイトルを取得
title = soup.title.string
print('タイトル:', title)
タイトル: Home - 株式会社クオリアシステムズ
class で指定してデータを抽出する
下記ソースを実行し「株式会社クオリアシステムズ」と表示されれば成功です。
import requests
from bs4 import BeautifulSoup
url = 'https://qualias.jp/'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
#タイトルを取得
title = soup.find(class_="hero-small-text").get_text()
print(title)
株式会社クオリアシステムズ
スクレイピング結果をExcelに貼り付ける
下記ソースを実行し「text.xlsx
」がこのソースを配置している箇所に作成され、A列とB列に値が入力されれば完了です。
import requests
import re
import openpyxl
from bs4 import BeautifulSoup
# エクセルを開く
wb = openpyxl.Workbook()
sheet = wb.active
sheet .title = "スクレイピング結果"
url = 'https://qualias.jp/blog/'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
cnt = 1
#配列ループ
for a in soup.find_all("a"):
data = str(a.string).rstrip()
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()
上記のものを組み合わせてスクレイピングツールを作成していることがわかりました。
スクレイピングは効率的にWebサイトからデータを取得することが出来ます。