Python 使用 BeautifulSoup 解析頁面資料
Python 使用 BeautifulSoup 解析頁面資料
準備
1.pip 安裝套件 BeautifulSoup
1
| pip install BeautifulSoup4
|
準備完畢後在進行下一步
開始
第一步、取得需解析的資料
引用 BeautifulSoup
並將須解析的資料填入
1 2 3 4 5 6 7 8
|
from bs4 import BeautifulSoup
html = '<div class="store ...... 以下省略'
soup = BeautifulSoup(html, 'html.parser')
|
資料範例如下 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| <div class="store"> <div class="store-info"> <div class="store-name"> <span class="flex-shrink-0">店名</span> <span class="font-bold"> 金玉堂 </span> </div> <div class="address"> <span class="flex-shrink-0">地址</span> <address class="not-italic">高雄市路竹區國昌路16號<a href="http://maps.google.com.tw/maps?q=高雄市路竹區國昌路16號" target="_blank" class="text-secondary">地圖</a></address> </div> </div> <div class="store-info"> <div class="store-name"> <span class="flex-shrink-0">店名</span> <span class="font-bold"> 統一超商 </span> </div> <div class="address"> <span class="flex-shrink-0">地址</span> <address class="not-italic">高雄市路竹區大社路162號<a href="http://maps.google.com.tw/maps?q=高雄市路竹區大社路162號" target="_blank" class="text-secondary">地圖</a></address> </div> </div> </div>
|
第二步、依資料內容進行解析
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
contact_list = []
store_infos = soup.find_all('div', class_='store-info')
for store_info in store_infos: store_name = store_info.find('span', class_='font-bold').text
address = store_info.find('address').text
map_link = store_info.find('a')['href']
contact_info = { 'name': store_name, 'address': address, 'link': map_link }
contact_list.append(contact_info)
print(contact_list)
|
撰寫完畢後執行即可取得解析後的資料
補充、將資料輸出成 Excel
安裝套件
1 2
| pip install pandas pip install openpyxl
|
引用套件並輸出檔案
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
import pandas as pd import json
*** 中間省略 ***
df = pd.DataFrame(contact_list)
with pd.ExcelWriter('contact_list.xlsx') as writer: df.to_excel(writer, index=False, sheet_name='Sheet1')
|
執行後就可以輕鬆解析並取得Excel囉!
今天的分享就到此結束
Thank you! 😄