'''
url参数编码的问题:
-- 使用 url 请求数据时,可以携带参数
-- 但是参数中不可以有中文,如果有中文需要转化为 Unicode编码
'''
'''
UA(User-Agent)问题:
-- 中文名为用户代理,是Http协议中的一部分,属于头域的组成部分,User Agent也简称UA
-- 是一种向访问网站提供你所使用的浏览器类型及版本、操作系统及版本、浏览器内核、等信息的标识
-- UA可以进行伪装
-- 如果需要频繁访问某个站点,建议多换几个UA使用
'''
'''
Cookie反扒
-- 访问个人主页,但是这是主页是需要登录之后才可以访问
-- 所以如果用爬虫访问该页面,访问的是登录界面,而不是主页
-- 此时就需要 cookie登录
-- 因为 cookie 中包含了访问页面时需要的数据,所有才可以访问成功
-- 我们可以先登录,找到登录后的 cookie,之后在进行爬取数据
'''
'''
在请求头中有这么一个参数 "accept:text/html、、、、、"
后面如果是html,说明返回是数据是html数据
如果是json,说明返回的是json数据
请针对其进行解析
'''
'''
报错:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8b in position 1: invalid start byte
原因:
服务端响应的数据是压缩后的版本
解决方法:
-- 方法1:
去掉请求头的一个参数对 "accept-encoding: gzip, deflate, br"
-- 方法2:
# (1) 将 数据转换成 流数据
buff = BytesIO(response.read())
# (2) 对流数据进行解压
f = gzip.GzipFile(fileobj=buff)
# (3) 读取流数据,并转换格式
content = f.read().decode('utf-8')
'''
'''
报错:
urlopen error [Errno 11001] getaddrinfo failed
原因:
不知,听说设计源码的问题
解决方法:
将 url 的单引号,改成双引号即可
'''
'''
报错:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb0 in position 255: invalid start byte
原因:
中文字符的Unicode编码0x0800-0xFFFF之间,(utf-8包含了部分汉字)
当你试图将该“中文字符”转成U码的utf-8时超出了其范筹
而GBK 规范收录了 ISO 10646.1 中的全部 CJK 汉字和符号,并有所补充
解决方法:
将 `response.read().decode('utf-8')` 改为 `response.read().decode('gbk')`
'''
'''
报错:
'gb2312' codec can't encode character '\xa0' in position 2: illegal multibyte sequence
解决方法:
方法1.
-- 在转换前将 '\xa0' 替换掉
-- string.replace(u’\xa0’, u’ ‘);
方法2.
-- 在gbk解码时忽略掉不能解码的数据
-- fp.write(content.encode("gbk", 'ignore').decode("gbk", "ignore"))
原因:
gbk无法转换’\xa0’字符
说明是将Unicode字符编码为GBK时候出现问题,可能是本身Unicode类型的字符中,包含了一些无法转换为GBK编码的一些字符,此时出错的数据不多,忽略它即可
'''
Python-爬虫常见问题
最新推荐文章于 2024-07-01 11:36:30 发布