liqi 发表于 2019-7-13 16:05

第一次拿python写的爬虫解码不了


我在下面加p.decode('gb2312')报错说list不能解码于是我又将p转换为str还是报错,说str不能能解码

AttributeError: 'list' object has no attribute 'decode'
AttributeError: 'str' object has no attribute 'decode'
网站的编码是gb2323

邓大侠 发表于 2019-7-13 16:47

本帖最后由 邓大侠 于 2019-7-13 16:56 编辑


从网站上爬取到内容一般都是字节型数据,
对data进行decode(gb2312)解码,就可以了.data是字节数据.
findall的返回值是一个list列表.直接str是没用的.得这样操作
p = re.compile(tj).findall(data.decode('gb2312'))
decode方法只能对字节数据操作,str支持的是encode()->转化为字节型数据类型
字节型的数据.decode()方法转化为str类型数据.

桥段 发表于 2019-7-13 16:48

是不是库的问题呀,Python我也不太懂的

87720108 发表于 2019-7-13 16:50

学习{:1_937:}{:1_937:}{:1_937:}{:1_937:}学习

xiao智可以不帅 发表于 2019-7-13 17:07

import urllib.request
import re
data=urllib.request.urlopen("http://www.ttmeishi.com/QQqun").read().decode("gb2312")
tj = "<li>(.*?)</li>"
p = re.compile(tj).findall(data)
print(p)
楼主可以啦
你看看

李立新 发表于 2019-7-13 17:45

最近也在学习爬虫,跟着前辈学习学习

liqi 发表于 2019-7-13 20:04

谢谢大家了,我知道了,虽然大家的代码都不一样,但是表达的意思都是一样的,数据爬出来后一定要进行编码,而不是去解通过正则表达式获得的内容
页: [1]
查看完整版本: 第一次拿python写的爬虫解码不了