TypeError: a bytes-like object is required, not 'str',需要字节串不是字符串

爬虫报出File “/home/xxx/testdemo/testdemo/xxx/lxxx.py”, line 40, in parse_page
modelt = info.split(r"路由器型号:")[-1]
TypeError: a bytes-like object is required, not ‘str’
2020-02-18 17:15:39 [scrapy.core.scraper] ERROR: Spider error processing <GET http://www.b-link.net.cn/download-detail.php?DId=75> (referer: http://xxxx/download.php?CateId=11&page=3)

bytes类型为python3新增的字节串类型,此时报出需要字节串而不是字符串,使用encode()函数将str类型转换为字节串类型,而decode()可将字节串转换为字符串。此时改为
modelt = info.encode().split(r"路由器型号:")[-1],由于上句语句已将info声明定义为
bytes
类型,又报出AttributeError: ‘bytes’ object has no attribute ‘encode’,此时又将上述语句改为modelt = info.decode().split(r"路由器型号:")[-1]后恢复正常。
其实上述方式绕远路了,python3已将字节串类型和字符串类型整合到
str
中可以将上述直接应用str函数对结果再做split即可,不需先encodedecode

其中深层缘由也不甚清楚,这里只是分享实践试出来的一种方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值