作者: 杭州-冬
地址:https://github.com/small99/deeptest/tree/master/第一期/杭州-冬 声明:本文已获作者授权转载,著作权归作者所有。 编辑:苦叶子 作者为开源优测-积微速成计划第一期参与者,每天都坚持学习,练习每日的代码任务
这是一个免费的组团成长计划 如何参与到开源优测-积微速成计划任务
记练习爬虫基础遭遇的坑 一、过程中的坑 爬百度首页时,获取不了html,只显示几行 from urllib import request import ssl
if name == "main": resp=request.Request('https://www.baidu.com')
#有时这里会出现decodeerrror,根据情况修改字符参数或者加个ignore #默认第二个参数为strict--有时会造成错误
data=resp.read().decode('UTF-8')
data=resp.read()
print(data) 执行后只是出现了下面几行简单的结果: <script> location.replace(location.href.replace("https://","http://")); </script> 啥都没有 百度首页源代码那么多 只显示了这几行 而且似乎和百度首页的html没什么关系 查了下 一种说法是 那个noscript的东东起到了反爬的效果,所以我看不到html内容
后来我看别人的教程都可以,仔细对比后 我把https 改成 http 然后那个无比激动的看到了百度首页的html 了解到 访问https的网站时 大概是ssl这个东西作怪 该类型的网站都要经过安全认证 其实执行结果仔细看的话 也可以看出些问题 上面说了是http 而不是 https.
所以仔细分析提示很重要,不要提示都没搞清楚就各种搞 根据提示搞清原因很重要--能让你快速定位问题所在 快速解决问题 --看提示 仔细分析 定位问题 --各种可能都试一下,大胆推翻自己的的理解 第一个也是这几个月心得之一,今天再次让我心服口服。 刚开始提示啥的哪会看,后来犯错多了,发现提示的都是那几个东西, 想起以前怎么改的一路下去就正确了
其实这个提示我也看了,不过没太仔细而且理解错误, 我以为这是正常html的一部分 告诉读者会把输入的http 换成htts, 我一想也对,浏览器上面也是https。结果正好相反 二、编码问题 在爬一些网站有这个报错 File "crawler_eg.py", line 10, in data=resp.read().decode('UTF-8') UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb3 in position 126: invalid start byte
根据提示 解码错误 2个方法 --选择解码字符集错误 把utf-8换成其它字符集 或--字符集正确,但不属于字符集解码内容的部分数据转化出错 decode('utf-8','ignore')--默认第二个参数为strict,改为ignore后直接忽视不能转换的数据 三、常见的一些错误提示 req=request.Request(http://www.) ^ SyntaxError: invalid syntax
--代码中有无效字符(非法或不符合规范),通常错误都在标注的 ^ 附近(也不一定哦) IndentationError:unexpected indent
--这类通常你的代码缩进出现错误,找个好的编辑器,它会用整齐划一的线条给你一个标记。照着线条调整就好 [总计175篇]2017年测试技术精选大集合
|