上回说到Python大星为走上爬虫之巅,从头修炼九天奇书《requests宝典》
修炼前,先锻炼一把武器,取名曰:九转点星枪,他就是“requests库”
作为一名初级爬者,炼器(安装)“requests库”,是你必备的一个技能。
Python大星手提九转点星枪,来到了“试炼之路”。
只听见试炼先知传声:欲进试炼之路,先得通过2道关,GET和POST请求。
说时迟,那时快。转眼间,python大星来到“初试场所”:
httpbin.org,一个免费提供HTTP请求和测试的网站。
该网站会判断如果客户端发起的是 GET 请求的话,它返回相应的请求信息
可以发现,我们成功发起了 GET 请求,返回结果中包含请求头、URL、IP 等信息。
你以为就这么简单?
刚刚小试牛刀,一个无参的GET请求,接下来增加点难度
有参的GET请求:
你以为我只会这一种吗?大错特错,看招:
魔高一尺,道高一丈。很多网站为了防止初级爬者骚扰,设置了一道门槛。
举个栗子,知乎网站:
why?他为什么拒绝了我?
道理很简单,“知乎”是大户人家,你以为是你随便登堂入室的吗?
你得懂点礼数,写个拜访帖。
User-Agent ,这个就是我们的“拜访贴”,浏览器标识信息;
一般我们抓过来的“俘虏”,属于“文字兵”。
对于特殊的“俘虏”,比如“图片”、“视频”、“音频”,他们经过一层伪装,
直接抓取的话,我们得到的是一串“乱码”,没有参考价值。
r.content带有一个 b,这代表是 bytes 类型的数据。
这个时候,就用到了你的基本功--Python基础
这里用了 open 方法,它的第一个参数是文件名称,第二个参数代表以二进制写的形式打开,可以向文件里写入二进制数据。
POST请求与GET请求一样,替换下名称即可。
如果你很顺利轻松地看到这
少年我观你骨骼惊奇,乃是难得一见的练武奇才...
现在,你已经是一名合格的一级爬者...
莱蒂斯俺的杰特们,准备好了吗?
文件上传任务:某网站注册,需要上传你帅气的图片。
OK,我们用httpbin测试哈!
Cookies
任务:某些网站资源,需要登录后获取资源
cookies就好像你浏览网页的一张身份证
登录“今日头条”,获取cookies信息
在headers中传入Cookie参数
Session 对象在接口测试的过程中,经常会遇到有些接口需要在登录的状态下才能运行,否则会进行相应的提示,例如“请登录“。
比较麻烦的做法:每次接口请求后获取到响应中的cookie,然后下次请求带上这个cookie;
有其他方法???
requests的 Session会话对象来进行处理。会话对象让你能够跨请求保持某些参数。
它也会在同一个 Session 实例发出的所有请求之间保持 Cookie。
看看,就这么简单。
代理设置在“试炼之路”,有很多任务,完成任务可以增加“试炼积分”
对于“一级爬者”,必须完成3个“五星任务”
五星任务描述:某网站,当受到大规模频繁请求,会禁客户端的 IP,导致一定时间段内无法访问
设置User Agent(用户代理)
服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。
怎么办?代理怎么设置?
常见的代理:
Android
Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19 Mozilla/5.0 (Linux; U; Android 4.0.4; en-gb; GT-I9300 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 Mozilla/5.0 (Linux; U; Android 2.2; en-gb; GT-P1000 Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1
Firefox
Mozilla/5.0 (Windows NT 6.2; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0 Mozilla/5.0 (Android; Mobile; rv:14.0) Gecko/14.0 Firefox/14.0
Google Chrome
Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36 Mozilla/5.0 (Linux; Android 4.0.4; Galaxy Nexus Build/IMM76B) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19
iOS
Mozilla/5.0 (iPad; CPU OS 5_0 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9A334 Safari/7534.48.3 Mozilla/5.0 (iPod; U; CPU like Mac OS X; en) AppleWebKit/420.1 (KHTML, like Gecko) Version/3.0 Mobile/3A101a Safari/419.3
超时设置
当网站请求超时时,我们有一件“法宝”可以使用,设置超时时间
特别国外的一些网站,不设置超时时间
那就得等到“天荒地老,海枯石烂”
,