💡 在本文章你將學到:在 Power Automate 如何實現網頁爬蟲
在本篇我們將會將已經取得的結果將網頁爬蟲透過 Power Automate 執行
寫入以下程式碼
concat(last(split(body('HTTP'),'<div class="RushbuyItemContainer__RushbuyItemContainer___2J94F">')), '<div class="RushbuyItemContainer__RushbuyItemContainer___2J94F">')
建立 Html to text: 將 HTTP 的 HTML 去除,得到純文字
這是節錄結果,仔細觀察後你會發現其實每筆商品的名稱開頭都已經有個”*” 可以做為錨點,而商品內固定都會有「我要搶」,商品連結則固定在最後方
* ECCO 北歐經典款男女皮革休閒運動鞋(10月限定-多款可選)
[https://s.yimg.com/zp/MerchandiseImages/57F25B2DA6-SP-17871469.jpg]
3 折起
限時均一價
ECCO 北歐經典款男女皮革休閒運動鞋(10月限定-多款可選)
$2,490$6,980
已搶 79 %
我要搶
[https://tw.buy.yahoo.com/gdsale/gdsale.asp?gdid=11259937]
* (全網最低價)American Explorer美國探險家 AZ3 20+25吋行李箱 輕量 飛機大輪組 旅行箱 終身保修
[https://s.yimg.com/zp/MerchandiseImages/5171AA3D13-Gd-11270268.jpg]
2 折起
限時超值特惠2件組
(全網最低價)AMERICAN EXPLORER美國探險家 AZ3 20+25吋行李箱 輕量 飛機大輪組 旅行箱 終身保修
$1,699$7,060
已搶 35 %
我要搶
[https://tw.buy.yahoo.com/gdsale/gdsale.asp?gdid=11270268]
接下來我們就能透過步驟 3 觀察到的格式取得各項資料,以下提供程式碼參考
☝🏿 這邊需要留意的是,由於每人命名的習慣都不同,因此需要將其改成自己的
✌🏿 極度建議先將資料剪下後建立一個單純處理字串的 flow 才不會因為用到 HTTP 而多了開銷
將純文字的內容以 “*” 分割出來,以取得切割好的商品資料們
split(body('Html_to_text'),'*')
由於是資料們,因此我們需要建立 Apply to each,開始數貓咪
在 Apply to each 寫入以下語法以取得商品名稱
split(split(items('Apply_to_each'),'*')[0],'[')[0]
* ECCO 北歐經典款男女皮革休閒運動鞋(10月限定-多款可選)\n [https://s.yimg.com/zp/MerchandiseImages/57F25B2DA6-SP-17871469.jpg]\n 3 折起\n 限時均一價\n \n \n ECCO 北歐經典款男女皮革休閒運動鞋(10月限定-多款可選)\n \n $2,490$6,980\n 已搶 79 %\n 我要搶\n [https://tw.buy.yahoo.com/gdsale/gdsale.asp?gdid=11259937]\n
→ 解釋語法:我們要先找到目標字串的開頭結果是否有固定格式,從上面的資料你可以看到,當你從第一個 ”[” 分割出來,前面這一串其實就是商品名稱,因此我們要做的就是將分割出來後的字串取出第一個資料,在程式裡,第一筆 =[0]
取得商品連結
last(split(split(last(split(last(split(items('Apply_to_each'), '*')), '我要搶')),']')[0],'['))
→ 解釋語法:這邊也是一樣的意思,我們要先取出上下文分隔格式後,取得紀錄,唯一要注意的就是我們要取得的資料順序會比較複雜,需要不斷確認
取得商品價格
split(items('Apply_to_each'),'$')[0]
接下來就是將資料存起來即可
這是在 apply to each 裡各個動作的名稱提供大家對照
以上就是利用 Power Automate 進行網頁爬蟲的過程,下一篇將會跟大家分享其實我不推薦用 Power Automate 網頁爬蟲的原因
列點摘要 by GenAI