Python-爬虫常见问题

'''
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编码的一些字符,此时出错的数据不多,忽略它即可
'''
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值