跳到主要內容

[PHP] 用 curl 來抓網路上的資料(二)

有時候我們抓的網頁需要傳參數, 而用 curl 該怎麼使用呢?
基本上在 html 傳參數是用 form 來傳送, 而傳送的方法有 get 和 post 兩種方式
get 的方式就是我們常看到的在網址後面, 參數=值的格式, 例如:
http://www.blogger.com/post-edit.g?blogID=95939&postID=1159981918019
就是將 blogID 這個變數其值是 95939 和 postID 值是 1159981918019 傳給伺服器
http://www.blogger.com/ 中的 post-edit.g 這個程式
所以, get 的方法就很簡單, 只要在 curl_init 中將整個網址當參數就可以了, 例如:
$ch = curl_init("http://www.blogger.com/post-edit.g?blogID=95939&postID=1159981918019");
如果參數的值是會變動的也可以用變數代替, 例如:
$ch = curl_init("http://www.blogger.com/post-edit.g?blogID=$bid&postID=$pid");

get 的方法一般比較常用, 方法也較簡單, 而且你可以用瀏覽器先看看你要抓的網站他的程式需要甚麼參數, 你就可以直接拿來使用
另一種方法 post 就沒那麼方便了, 雖然用 curl 的方法沒多複雜, 但是我們沒辦法直接看到網站的程式, 他所需要的參數是甚麼, 所以需要其他輔助的工具來幫忙, 這個部份比較多我就留在下一次再跟大家介紹

留言

這個網誌中的熱門文章

用 NotebookLM AI 打造 Pikmin 蘑菇重生計算機

有玩《Pikmin Bloom》的玩家都知道,遊戲中的大蘑菇(例如「一般 神秘蘑菇」或「一般 紅色蘑菇」)被推毀後需要一段時間才會重生 。為了精準掌握下一次搶菇的時機,我決定透過 NotebookLM 的協助, 動手寫一個小工具:只要上傳包含挑戰剩餘時間(如「剩下20 分 47 秒」或「剩下1 小時 1 分 58 秒」)的遊戲截圖 ,系統就能自動推算出精確到秒的重生時間。 一開始我只上傳了一張 Pikmin 打菇的截圖, AI 就根據我的要求自動根據左上角的系統時間與圖中剩餘時間等資訊, 告訴我要安裝相關 OCR 套件, 並開發出第一個版本的程式, 這個程式已經大致完成了我的需求, 但離實用還有一小段距離, 所以在持續改進的開發過程中,我遇到了幾個有趣且經典的技術挑戰(對於這些影線處理, OCR, 圖片 EXIF info 等知識, 我是沒有太多的經驗, 但在 AI 一步一步的引導下完成了我的需求),在此與大家分享:  一、 影像預處理:拯救低迷的 OCR 辨識率 一開始,我直接將遊戲截圖丟給 Tesseract OCR 引擎,但辨識結果慘不忍睹。原因是遊戲畫面背景太過複雜(充滿草地、花朵與蘑菇發光特效) ,且文字是白色的。 為了解決這個問題,AI 引入了 OpenCV 進行影像預處理。先將圖片精準裁切,只保留左下角的血條與時間區域,接著轉為灰階並放大兩倍,最後使用二值化(經過測試閾值 200 得到不錯的效果)並反轉顏色。這個步驟成功將複雜的畫面轉換成 Tesseract 最容易辨識的「白底黑字」,大幅提升了準確率, 但在做更多的不同截圖的測試, 閾值 200 並不能成功轉換成 OCR 能辨識的黑白圖, 因此我請 AI 調整成以 200 為基礎, 如果辨識失敗, 在調整成 210, 190, 220, 180 如果都失敗才判定無法辨識(下圖是調整後的圖形)。  二、 對抗 OCR 的奇妙誤判與高容錯 Regex 解決了影像問題,接著是文字解析。遊戲字體中的無襯線數字「1」非常容易被誤判為英文字母 l、I、直線 |,甚至在辨識「1 小時」時被讀成 ]小時 。 為此,我設計了一套高容錯率的正規表達式 (Regex):(?:([0-9lIi|\]\[]+)\s*小?\s*時\s*)?(?:([0-9lIi|\]\[]+)\s*分\s*)?([0-9lIi...

用 Antigravity CLI 將截圖中的表格轉換成可編輯的 xlsx

下午參加了一個證券公司辦的線上講座, 用我很熟悉的 Webex, 主題是: "AI算力引路、應用爆發台股5萬點財富超前部署!", 講座內容很豐富, 講者也分享了幾個券商研究部門的分析資料, 如下圖: 我看了想之後再研究分析一下, 當下立刻截圖, 想說之後再手動鍵入 google sheets (是的我沒花錢買 Microsoft Excel), 後續講者又分享的好幾個不同的表格, 我也儘可能的都截圖下來。 會議結束後, 看到好多個截圖, 裡面有密密麻麻的資料, 突然想到如果用 AI 來幫我轉成可編輯的 google sheets 應該會很快完成, 順便也試試 AI 的圖形辨識能力。 因此我就用了 Antigravity CLI 下了一句 prompt: " 請幫我把此目錄下的 PNG 檔案內容的表格轉換成 google sheets 的格式, 每個 PNG 產生一個對應的 google sheets. " 果然在一連串的 yes confirm 後, 就幫我都轉好了, 同時他還幫我寫好了一支程式。 Antigravity 不是去呼叫 Gemini api 幫我把一個一個的截圖(PNG格式)轉成 google sheets 的檔案, 而是幫我寫的一支程式, 並且幫我把他們輸出成為 xlsx 與 csv 格式。 比較特別的是我原本以為這支程式是先用 OCR library 去辨識我給的截圖, 但我去看了程式, 原來他已經將辨識後的文字直接放在程式中的陣列中, 然後用 library 轉成我要的格式, 所以有可能是圖形辨識的部分, 還是用雲端的 Gemini, 得到的資料才用地端的程式輸出成我要的格式。 輸出的效果非常的不錯, 我簡單的比對一下, 內容都正確, 以下是輸出的結果: 全覽圖轉換的效果也很不錯: 下次你如果也有大量的會議截圖, 你也可以利用 AI 來幫你轉成你方便處理的格式, 沒有一定要用 Antigravity CLI, OpenAI, Anthorpic 也都有類似的工具可以幫你完成。

用 Antigravity CLI 開發一個監控台積電台股與美股的儀表板

 前言: 偶然在 Youtube 上看到一個即時監控台積電(TSMC)的頻道, 我立刻截圖, 如下圖: 想利用 Antigravity CLI 做一個類似的功能, 因此把這張截圖請 agy cli 幫忙完成, 果然不到幾分鐘就完成了。 後來, 我又加了幾個功能: 1. 新增了一個 Competitor Pulse 區塊, 加入美股的 Intel 與韓股的 Samsung. 2. 新增了美股或台股交易期間, 每三分鐘更新即時行情(agy cli 自動幫我在非交易期間, 每五分鐘更新一次。) 3. 原本只有顯示台股與美股交易時間的區塊, 我請 agy cli 幫我放台股的大盤指數與櫃買指數, 與美股的紐約證券指數, Nasdaq 指數及費城半導體指數。 結果如下圖: 整個過程花了不到三小時就完成了, Vibe coding 實在太厲害了。 我也請 agy cli 根據這次的開發幫我寫一個針對有 python 程式設計者寫一個 Blog, 結果如下: # 🚀 從零打造「台積電 ADR 跨國套利監控儀表板」:Python 實戰與大盤指數 API 踩坑記 大家好!身為一個關注台股與美股的投資人/開發者,你是否曾想過即時監控 **台積電(2330.TW)** 與其在美股發行的 **TSMC ADR(TSM)** 之間的折溢價(跨國套利空間)? 今天這篇文章將帶領大家使用 Python,從零開始打造一個 **極具科技感、支援交易時間與非交易時間雙模式更新、並整合美台關鍵大盤指數** 的網頁儀表板。 這篇文章特別適合 **具備基本 Python 開發經驗** ,想嘗試金融 API 串接、自動化背景排程,或是對前端 CSS 排版感興趣的朋友! --- ## 💡 為什麼要監控 TSMC ADR 折溢價? 台積電(2330)普通股在台灣上市,而 TSM ADR 則在美國紐約證交所(NYSE)交易。兩者有著 **1 單位 ADR = 5 股普通股** 的固定換算比例。 由於兩地交易時間不同,加上匯率波動,美股 ADR 的價格換算回台幣後,往往與台股有著數個百分點的「折溢價差」(通常 ADR 會有溢價)。這個價差往往是隔天台股開盤時的重要指標! 我們的公式非常簡單: 1. **ADR 折算台幣價** = $ \ frac { \ text {ADR 收盤價 (USD)}...