我工作的摘要電子郵件發送給我公司的應用程序的用戶。爲此,我正在瀏覽每個用戶的電子郵件,並試圖找到關於每封電子郵件的一些基本信息(來自主題,時間戳和導致我困難的方面,圖像)。如何解析HTML編碼
我認爲引入nokogiri的search('img')
功能將被罰款拉出圖像。不幸的是,它看起來像大多數電子郵件有很多垃圾嵌入在這些圖像的網址,如換行符(「\ n」),轉義字符(「\」)和字符串「3D」出於某種原因。例如:
<img src=3D\"https://=\r\nd3ui957tjb5bqd.cloudfront.net/images/emails/1/logo.png\"
這導致搜索只拉出實際的URL件/ src目錄的:
#(Element:0x3fd0c8e83b80 {
name = "img",
attributes = [
#(Attr:0x3fd0c8e82a28 { name = "src", value = "3D%22https://=" }),
#(Attr:0x3fd0c8e82a14 { name = "d3ui957tjb5bqd.cloudfront.net", value = "" }),
#(Attr:0x3fd0c8e82a00 { name = "width", value = "3D\"223\"" }),
#(Attr:0x3fd0c8e829ec { name = "heigh", value = "t=3D\"84\"" }),
#(Attr:0x3fd0c8e829d8 { name = "alt", value = "3D\"Creative" }),
#(Attr:0x3fd0c8e829c4 { name = "market", value = "" }),
#(Attr:0x3fd0c8e829b0 { name = "border", value = "3D\"0\"" })]
})
任何人是否有一個想法,爲什麼這種情況正在發生,以及如何刪除這一切垃圾?
我得到像樣的成績,從大量的gsub
的和安全檢查,但感覺很俗氣。
我也試過Sanitize.clean
這不起作用,並且在「How to sanitize html string except image url?」中提到了PermitScrubber。
正如@馬特低於所述,內容被編碼。這不是一個Nokogiri問題,它是文本被封裝和連續添加以適應舊電子郵件路由器,然後重建的結果。請注意,確定如何放鬆,然後將清理後的文本傳遞給Nokogiri。你會發現這種問題在互聯網上,從一個已經多次編碼嵌入HTML,以格式錯誤標記,並在多國語言,這將讓你着迷未編碼的多字節字符的HTML。這是在互聯網叢林中的生活。 –
哈哈感謝您的解釋 – SomeSchmo