Python в веб-выскабливание ошибку - ошибку TypeError: не удается использовать шаблон строки в байтах-как объект


Я хочу построить скребок для паутины. В настоящее время я изучаю Python. Это самые основы!

Код Python

import urllib.request
import re

htmlfile = urllib.request.urlopen("http://basketball.realgm.com/")

htmltext = htmlfile.read()
title = re.findall('<title>(.*)</title>', htmltext)

print (htmltext)

Ошибка:

  File "C:Python33libre.py", line 201, in findall
    return _compile(pattern, flags).findall(string)
TypeError: can't use a string pattern on a bytes-like object
2 4

2 ответа:

Вы должны декодировать свои данные. Поскольку веб-сайт, о котором идет речь, говорит

charset=iso-8859-1

Используй это. utf-8 не будет работать в этом случае.

htmltext = htmlfile.read().decode('iso-8859-1')

Используйте литерал байт как шаблон:

title = re.findall(b'<title>(.*)</title>', htmltext)

Или декодировать полученные данные в строку:

title = re.findall('<title>(.*)</title>', htmltext.decode('utf-8'))

(Изменить utf-8 с соответствующей кодировкой документа)