如何從雜亂文字中擷取所有電子郵件與連結
要從雜亂的網頁或匯出檔中找出所有電子郵件地址,可以先用符合地址格式的比對模式,再清理緊鄰地址的標點符號。簡單的模式會把句末的句號或逗號一起抓進來,也會漏掉以混淆方式寫的地址。取得清單後,使用前請逐一檢視。
擷取電子郵件與連結從網頁中抓出電子郵件免費使用為什麼簡單的比對模式會出錯
常見的寫法是「一串非空白字元、一個 @ 符號、再一串非空白字元」。這種寫法很容易寫,但有兩個問題。
它會多抓(過度比對)。在句子「Contact [email protected], or [email protected].」中,模式 "\S+@\S+" 會抓到「[email protected],」(帶逗號)和「[email protected].」(帶句號)。這些都不是有效的地址,郵件合併或垃圾郵件過濾器都會拒絕它們。
它也會漏掉(比對不足)。以 "ana [at] example [dot] com" 或 "ana at example dot com" 這類寫法的地址完全抓不到。寫作者用這種形式避免被爬蟲收錄,有些網頁也因同樣的原因使用。請先把這些文字換回符號,再進行擷取。
較好的模式只允許地址左側出現合法字元,右側的網域則只允許以字母為主的內容。"[\w.+-]+@[\w-]+\.[\w.-]+" 是合理的起點。不過,當地址位於句尾時,它仍可能保留網域後的句號,因為網域的最後一段允許句點。請把每筆比對結果末尾的一個句號去掉。擷取電子郵件與連結工具已會自動去除結尾標點,因此這個步驟主要在你自行撰寫模式時才需要。
以下是上述兩個例子的比對結果:
- "Write to [email protected]." 會得到 "[email protected].",句尾的句號必須去掉。
- "Contact [email protected], or [email protected]." 會得到 "[email protected]" 與 "[email protected].",同樣需要清理。
連結的情況也一樣
網址也有相同的問題。位於句尾的連結常帶著句號、逗號或右括號。括號內的連結,例如 (see https://example.com/page),若比對模式是貪婪的,就可能把右括號一起抓進來。請清除結尾標點,再確認每個連結都能在瀏覽器中開啟。
連結也可能是相對路徑,例如 /contact,而電子郵件地址的擷取會忽略這類連結。請先決定是否只需要絕對網址,並在執行擷取時註明。
適用於多數匯出檔的步驟
- 先用尋找與取代處理混淆格式:只在能確定文字是地址的地方,把 "[at]" 換成 @、"[dot]" 換成句號。
- 將文字,或網頁的 HTML 原始碼,貼到擷取工具的 文字或 HTML 欄位。工具會找出地址與連結,並去除結尾標點。
- 保持勾選 移除重複項目。它會忽略電子郵件地址的大小寫,因此 [email protected] 與 [email protected] 只會計算一次。若你已有現成的清單,可用刪除重複行達到相同效果。
- 若想依順序排列,請勾選 依 A→Z 排序。
- 最後檢視整份清單,留意不是地址的項目,例如剛好含有 @ 符號的圖片檔名。
範例:頁面中有 "Sales: [email protected]"、"[email protected]." 與 "Support: [email protected]"。擷取會得到三筆結果。去掉句號並忽略大小寫去除重複後,結果為兩個地址:[email protected] 與 [email protected]。若想依順序排列,可在擷取工具中勾選 依 A→Z 排序,或使用排序文字行。
讓清單保持乾淨並符合法規
在許多地方,電子郵件地址都屬於個人資料,許多國家也訂有反垃圾郵件的規定。從公開網頁取得地址,並不代表就能寄信給對方。歐盟的 GDPR 與美國的 CAN-SPAM Act 是兩個知名的例子,它們的要求各不相同。以上為一般資訊,並非法律建議。寄送任何郵件前,請先確認適用於你與清單上對象的規定,並且在大量寄送的郵件中提供退訂選項。
特殊情況
- 不是地址的文字。 像 [email protected] 這樣的字串也可能被比對到。請移除任何以檔案副檔名結尾的項目。
- 圖片中的地址。 先用圖片轉文字工具讀取截圖,再從結果擷取。截圖與照片指南說明如何取得乾淨的辨識結果。
- 隱藏字元。 地址中的零寬空格會破壞比對,導致地址被漏掉。若已知的地址沒有被找到,請先移除隱藏字元再進行擷取。隱藏字元指南說明這些字元的來源。
- 編碼過的地址。 有些網頁會用 HTML 實體隱藏地址,例如用 @ 代表 @。請先解碼網頁文字,否則比對模式看不到 @ 符號。
- 大型匯出檔。 處理大檔時,請先擷取到檔案中,再將數量與預期的行數比對。
快速解答
為什麼我的電子郵件擷取結果在結尾多了一個句號?
網域中允許出現句點,因此接受句點的模式可能會把句尾的句號一起抓進來。請去掉每筆比對結果末尾的一個句號。
有沒有工具能找出寫成 "name at example dot com" 的地址?
若沒有替換步驟,通常無法可靠地找出。請先把文字換成符號,但只在確定是地址的地方進行,避免一般句子被改動。
從網頁擷取的每個地址都能寄信嗎?
這取決於你與收件人身在何處,以及郵件的內容。反垃圾郵件與隱私規定都適用,請先確認。以上為一般資訊,並非法律建議。
借助 AI 協助,由英文原文翻譯而成。
留言
還沒有留言,搶先留言吧。


