天天看點

python3 使用urllib.request子產品,關于bytes和string的那些事

python 3.4.2 使用urllib.request子產品擷取網頁内容,雖說知道要注意編解碼的問題,但有些細節還是不清楚,終于碰到了TypeError的錯誤:

TypeError:can't use a string pattern on a bytes-like object
           

知道是位元組和字元使用錯誤,但是問題在哪兒呢?隻好敲代碼問問了。

import urllib.request

url = 'http://www.baidu.com'
req = urllib.request.Request(url)
response = req.urlopen(req)
page = response.read()
the_page = page.decode("UTF-8")
b_page = the_page.encode("UTF-8")
           

page 的類型是: bytes

the_page 的類型是: string

b_page 的類型是: bytes

知道了這些細節,修改代碼bug就很簡單了。