さてさて,引き続きキッコーマンのホームページのスクレイピングをしていきます.今回はスクレイピングしたものをエクセルに保存するプログラムを書いてみました.
スクレイピングする内容ですが,「最新のお知らせ」の投稿日時とタイトルです.コードは以下のようになります.
import requests
from bs4 import BeautifulSoup
import openpyxl
import re
url = requests.get('https://www.kikkoman.com/jp/news/2024/')
soup = BeautifulSoup(url.content.decode("utf-8", "ignore"), 'html.parser')
wrap = soup.find('div', class_='cmn-news')
date = wrap.find_all('time', class_="cmn-news__date")
date_list = [x.get_text() for x in date]
title = wrap.find_all('h3', class_="cmn-news__title")
title_list = [x.get_text(separator="") for x in title]
wb = openpyxl.Workbook()
sheet = wb.active
sheet .title = "result"
line_date = 1
for xcl_date in date_list:
print(xcl_date)
cell_date = "A"+str(line_date)
sheet[cell_date].value = xcl_date
line_date = line_date + 1
line_title = 1
for xcl_title in title_list:
print(xcl_title)
cell_title = "B"+str(line_title)
sheet[cell_title].value = xcl_title
line_title = line_title + 1
wb.save("sample.xlsx")
wb.close()
今回,エクセルの操作をする,ということでエクセルに関する記述に注目してみます.
wb = openpyxl.Workbook()
sheet = wb.active
sheet .title = "result"
1行目でワークブックを作成し,2行目でシートを有効化し,3行目でシートにタイトルを付けています.
line_date = 1
for xcl_date in date_list:
print(xcl_date)
cell_date = "A"+str(line_date)
sheet[cell_date].value = xcl_date
line_date = line_date + 1
「line_data 」は行を操作するための変数で,最初に1行目を選択しています.
そしてfor以下で「date_list」に格納された投稿日時を順に「xcl_date」に入れます.”xcl_date”を入れるセルを,
cell_date = "A"+str(line_date)
sheet[cell_date].value = xcl_date
で指定しています.投稿タイトルについても同様に記述しています.
そして最後にエクセルを保存し,終了しています.