首頁 >後端開發 >Python教學 >為什麼「re.findall()」在提取 URL 時會拋出「TypeError: Can\t Use a String Pattern on a Bytes-Like Object」?

為什麼「re.findall()」在提取 URL 時會拋出「TypeError: Can\t Use a String Pattern on a Bytes-Like Object」?

Susan Sarandon
Susan Sarandon原創
2024-11-17 11:31:02678瀏覽

Why Does `re.findall()` Throw a `TypeError: Can't Use a String Pattern on a Bytes-Like Object` When Extracting URLs?

TypeError:無法在re.findall() 中的位元組類別物件上使用字串模式

嘗試自動取得時來自網頁的URL,您可能會遇到以下錯誤:

在您的程式碼中,您使用re.findall() 來找出正規表示式正規表示式的符合項。但是,當您嘗試將正規表示式套用至已取得的 HTML 內容時,您會收到錯誤。

根本原因:

問題源自於事實上,您正在使用的 HTML 內容是位元組形式,而您使用的正規表示式是字串形式。正規表示式不能直接應用於類似位元組的物件。

Lösung:

要解決此問題,您需要將HTML 內容轉換為字串:

這位元組狀HTML 內容解碼為字串,使正規表示式能夠成功套用。

完成轉換後,您可以繼續使用用於尋找網頁標題的正規表示式。更正後的程式碼應如下圖所示:

以上是為什麼「re.findall()」在提取 URL 時會拋出「TypeError: Can\t Use a String Pattern on a Bytes-Like Object」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn