我想建立一个网络刮刀。目前,我正在学习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:\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
答案 0 :(得分:5)
您必须解码数据。由于有问题的网站说
charset=iso-8859-1
使用它。 utf-8在这种情况下不会工作。
htmltext = htmlfile.read().decode('iso-8859-1')
答案 1 :(得分:3)
使用bytes literal作为模式:
title = re.findall(b'<title>(.*)</title>', htmltext)
或将检索到的数据解码为字符串:
title = re.findall('<title>(.*)</title>', htmltext.decode('utf-8'))
(使用适当的文档编码更改utf-8
)