前提・実現したいこと
下記サイトの各店舗の店名、住所、取り扱い商品をスクレイピングしたい。
住所のみでスクレイピングした際は実行できる。
発生している問題・エラーメッセージ
Traceback (most recent call last): File "p:/Programing/Webスクレイピング/ほとけ/main.py", line 41, in <module> ws.cell(row = i, column = 3, value = elem.contents[0]) File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\openpyxl\worksheet\worksheet.py", line 242, in cell cell.value = value File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\openpyxl\cell\cell.py", line 215, in value self._bind_value(value) File "C:\Users\user\AppData\Local\Programs\Python\Python38\lib\site-packages\openpyxl\cell\cell.py", line 184, in _bind_value raise ValueError("Cannot convert {0!r} to Excel".format(value)) ValueError: Cannot convert <i class="fa fa-folder-open"></i> to Excel
該当のソースコード
lang
1import openpyxl as px 2import requests 3from bs4 import BeautifulSoup 4 5book = px.Workbook() 6book.save('shops_info.xlsx') 7ws = book.active 8 9# 電気街南側のアキバ系ショップ 108店舗 10load_url = "http://www.akibakei.info/plist_a.php?ar=%E9%9B%BB%E6%B0%97%E8%A1%97%E5%8D%97%E5%81%B4&pid=49" 11html = requests.get(load_url).text 12soup = BeautifulSoup(html, "html.parser") 13 14shops = soup.find_all("h3") 15adresses = soup.find_all("adress") 16items = soup.find_all("div",["items"]) 17 18shop_name = soup.find("h1").text 19 20ws.title = shop_name 21 22ws.cell(row = 1, column = 1, value = "店名") 23ws.cell(row = 1, column = 2, value = "住所") 24ws.cell(row = 1, column = 3, value = "取扱商品") 25 26i = 2 27 28for elem in shops: 29 ws.cell(row = i, column = 1, value = elem.contents[0]) 30 i = i + 1 31else: 32 print('FINISH!!') 33 34for elem in adresses: 35 ws.cell(row = i, column = 2, value = elem.contents[0]) 36 i = i + 1 37else: 38 print('FINISH!!') 39 40for elem in items: 41 ws.cell(row = i, column = 3, value = elem.contents[0]) 42 i = i + 1 43else: 44 print('FINISH!!') 45 46book.save('shops_info.xlsx')
試したこと
下記プログラムのみで実行すると店名はスクレイピングできますが、これに加えて住所、取り扱い商品を加えるとスクレイピングできない。
lang
1import openpyxl as px 2import requests 3from bs4 import BeautifulSoup 4 5book = px.Workbook() 6book.save('shops_info.xlsx') 7ws = book.active 8 9# 電気街南側のアキバ系ショップ 108店舗 10load_url = "http://www.akibakei.info/plist_a.php?ar=%E9%9B%BB%E6%B0%97%E8%A1%97%E5%8D%97%E5%81%B4&pid=49" 11html = requests.get(load_url).text 12soup = BeautifulSoup(html, "html.parser") 13 14shops = soup.find_all("h3") 15 16shop_name = soup.find("h1").text 17 18ws.title = shop_name 19 20ws.cell(row = 1, column = 1, value = "店名") 21ws.cell(row = 1, column = 2, value = "住所") 22ws.cell(row = 1, column = 3, value = "取扱商品") 23 24i = 2 25 26for elem in shops: 27 ws.cell(row = i, column = 1, value = elem.contents[0]) 28 i = i + 1 29else: 30 print('FINISH!!') 31 32book.save('shops_info.xlsx')
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/03 05:32
退会済みユーザー
2021/05/03 06:10