2024年5月28日 星期二

分享用Python的beautifulsoup4來抓取大樂透表格資料

分享用Python的beautifulsoup4來抓取大樂透表格資料

相關課程:ChatGPT輔助EXCEL VBA網路爬蟲與圖表繪製班
https://ojt.wda.gov.tw/ClassSearch/Detail?OCID=157308&plantype=1

這篇分享文,主要可以和 [分享QueryTables物件改用IE物件來抓取大樂透表格資料]比較,

一個是用EXCEL VBA的IE物件,一個是用Python的beautifulsoup4來擷取資料,

兩相比對,沒有各有所長,但若是存為EXCEL,那當然直接用VBA是最直接

若是便利性和後續程式擴充的支援,當然還是Python較有優勢。

 今天主要是學習利用beautifulsoup的find與find_all方法,以解析HTML的標籤與class,

find是取一個或第一個標籤資料,取得的資料型態為文字,

而find_all方法,是取得多個標籤資料,資料型態為串列型態。

練習下載大樂特歷史資料,先找到table標籤,

再取得tr與td標籤,很快地就可以取得所有資料,

其他的就是去除換行與空白,可以用replace方法即可解決問題。

完整教學

範例一:大樂特歷史資料下載

網址:https://www.lotto-8.com/listltobigbbk.asp?indexpage=1&orderby=new

**可先藉由 html-online分析

https://html-online.com/editor/

完整程式碼:

import requests

from bs4 import BeautifulSoup

url = "https://www.lotto-8.com/listltobigbbk.asp?indexpage=1&orderby=new"

html = requests.get(url)

html.encoding="utf-8"

sp = BeautifulSoup(html.text, "html.parser")

tbl = sp.find("table","auto-style4")

list_tr = tbl.find_all("tr")

for i in range(len(list_tr)):

    list_td=list_tr[i].find_all("td")

    print(list_td[0].text+","+list_td[1].text.replace("\xa0","")+","+list_td[2].text)

**日期改為標準格式 年/月/日

list_td[i].text[0:4]+"/"+list_td[i].text[4:9]

將下載資料存成EXCEL

import requests

from openpyxl import Workbook

wb = Workbook()

sheet = wb.active

from bs4 import BeautifulSoup

url = "https://www.lotto-8.com/listltobigbbk.asp?indexpage=1&orderby=new"

html = requests.get(url)

html.encoding="utf-8"

sp = BeautifulSoup(html.text, "html.parser")

tbl=sp.find("table","auto-style4")

# print(tbl.text)

list_tr=tbl.find_all("tr")

for i in range(0,len(list_tr)):

    list_td=list_tr[i].find_all("td")

    S=list_td[0].text+","+list_td[1].text.replace("\xa0","")+","+list_td[2].text

    list1=S.split(",")

    print(list1)

    sheet.append(list1

wb.save("E:\\大樂透.xlsx")


開課資訊公布在FB或是部落格:

https://www.facebook.com/scuexcelvba/


教學論壇(之後課程會放論壇上課學員請自行加入):

https://groups.google.com/g/tcfst_python_2024


課程簡介:

單元01_建置Python開發環境與程式測試

單元02_基本語法與結構控制件

單元03_迴圈資料結構與自訂函數

單元04_串列、字典與檔案與資料庫處理

單元05-1_ChatGPT+Excel自動化程式設計基礎

單元05-2_ChatGPT+Python自動化程式設計基礎

單元05-3_ChatGPT協助撰寫Excel與Python程式

單元05-4_開放資料處理CSV和JSON資料處理

單元05-5_Python網頁資料擷取基礎

單元05-6_網頁資料擷取台彩與股市資料

單元06_使用Pandas與處理_Excel_試算表

單元07_用Python操作Excel儲存格、欄列與工作表

單元08_用Python操作Excel樞紐分析表與折線圖表


吳老師  113/5/24

懶人包:
EXCEL函數與VBA http://terry28853669.pixnet.net/blog/category/list/1384521
EXCEL VBA自動化教學 http://terry28853669.pixnet.net/blog/category/list/1384524


其他相關學習:


ChatGPT,EXCEL,VBA,Python,自強工業基金會,EXCEL,VBA,函數,程式設計,線上教學,PYTHON安裝環境

沒有留言: