2015-06-21 20 views
30

Tôi đang cố gắng tìm hiểu cách tự động tìm nạp url từ một trang. Trong đoạn mã sau tôi đang cố gắng để có được những danh hiệu của trang web:Python 3.3 LoạiError: không thể sử dụng mẫu chuỗi trên đối tượng giống byte trong re.findall()

import urllib.request 
import re 

url = "http://www.google.com" 
regex = '<title>(,+?)</title>' 
pattern = re.compile(regex) 

with urllib.request.urlopen(url) as response: 
    html = response.read() 

title = re.findall(pattern, html) 
print(title) 

Và tôi nhận được lỗi này bất ngờ:

Traceback (most recent call last): 
    File "path\to\file\Crawler.py", line 11, in <module> 
    title = re.findall(pattern, html) 
    File "C:\Python33\lib\re.py", line 201, in findall 
    return _compile(pattern, flags).findall(string) 
TypeError: can't use a string pattern on a bytes-like object 

Tôi đang làm gì sai?

Cảm ơn!

+0

thể trùng lặp của [Chuyển byte thành một chuỗi Python] (http://stackoverflow.com/questions/606191/convert-bytes-to-a-python-string) – gnat

Trả lời

53

Bạn muốn chuyển đổi html (đối tượng giống byte) thành chuỗi bằng cách sử dụng .decode, ví dụ: html = response.read().decode('utf-8').

Xem Convert bytes to a Python String

+3

tôi nhìn thấy. Điều này không xảy ra trong Python 2.7. Cảm ơn! –

Các vấn đề liên quan