python爬虫解析实战适合初学者(趣说Python爬虫02--requests库基本使用)(1)

python爬虫解析实战适合初学者(趣说Python爬虫02--requests库基本使用)(2)


上回说到Python大星为走上爬虫之巅,从头修炼九天奇书《requests宝典》

python爬虫解析实战适合初学者(趣说Python爬虫02--requests库基本使用)(3)

修炼前,先锻炼一把武器,取名曰:九转点星枪,他就是“requests库”

作为一名初级爬者,炼器(安装)“requests库”,是你必备的一个技能。

python爬虫解析实战适合初学者(趣说Python爬虫02--requests库基本使用)(4)

Python大星手提九转点星枪,来到了“试炼之路”

只听见试炼先知传声:欲进试炼之路,先得通过2道关,GET和POST请求。

说时迟,那时快。转眼间,python大星来到“初试场所”

httpbin.org,一个免费提供HTTP请求和测试的网站。

该网站会判断如果客户端发起的是 GET 请求的话,它返回相应的请求信息

python爬虫解析实战适合初学者(趣说Python爬虫02--requests库基本使用)(5)

python爬虫解析实战适合初学者(趣说Python爬虫02--requests库基本使用)(6)

python爬虫解析实战适合初学者(趣说Python爬虫02--requests库基本使用)(7)

可以发现,我们成功发起了 GET 请求,返回结果中包含请求头URLIP 等信息。

你以为就这么简单?

刚刚小试牛刀,一个无参的GET请求,接下来增加点难度

有参的GET请求:

python爬虫解析实战适合初学者(趣说Python爬虫02--requests库基本使用)(8)

python爬虫解析实战适合初学者(趣说Python爬虫02--requests库基本使用)(9)

你以为我只会这一种吗?大错特错,看招:

python爬虫解析实战适合初学者(趣说Python爬虫02--requests库基本使用)(10)


魔高一尺,道高一丈。很多网站为了防止初级爬者骚扰,设置了一道门槛。

举个栗子,知乎网站:

python爬虫解析实战适合初学者(趣说Python爬虫02--requests库基本使用)(11)

python爬虫解析实战适合初学者(趣说Python爬虫02--requests库基本使用)(12)

python爬虫解析实战适合初学者(趣说Python爬虫02--requests库基本使用)(13)


why?他为什么拒绝了我?

道理很简单,“知乎”是大户人家,你以为是你随便登堂入室的吗?

你得懂点礼数,写个拜访帖

python爬虫解析实战适合初学者(趣说Python爬虫02--requests库基本使用)(14)


User-Agent ,这个就是我们的“拜访贴”,浏览器标识信息

一般我们抓过来的“俘虏”,属于“文字兵”。

对于特殊的“俘虏”,比如“图片”、“视频”、“音频”,他们经过一层伪装,

直接抓取的话,我们得到的是一串“乱码”,没有参考价值。

python爬虫解析实战适合初学者(趣说Python爬虫02--requests库基本使用)(15)

r.content带有一个 b,这代表是 bytes 类型的数据。

这个时候,就用到了你的基本功--Python基础

python爬虫解析实战适合初学者(趣说Python爬虫02--requests库基本使用)(16)

python爬虫解析实战适合初学者(趣说Python爬虫02--requests库基本使用)(17)

这里用了 open 方法,它的第一个参数是文件名称,第二个参数代表以二进制写的形式打开,可以向文件里写入二进制数据。


POST请求与GET请求一样,替换下名称即可。

如果你很顺利轻松地看到这

少年我观你骨骼惊奇,乃是难得一见的练武奇才...

python爬虫解析实战适合初学者(趣说Python爬虫02--requests库基本使用)(18)

现在,你已经是一名合格一级爬者...

莱蒂斯俺的杰特们,准备好了吗?

文件上传

任务:某网站注册,需要上传你帅气的图片

OK,我们用httpbin测试哈!

python爬虫解析实战适合初学者(趣说Python爬虫02--requests库基本使用)(19)

Cookies

任务:某些网站资源,需要登录后获取资源

python爬虫解析实战适合初学者(趣说Python爬虫02--requests库基本使用)(20)

cookies就好像你浏览网页的一张身份证

登录“今日头条”,获取cookies信息

python爬虫解析实战适合初学者(趣说Python爬虫02--requests库基本使用)(21)

在headers中传入Cookie参数

python爬虫解析实战适合初学者(趣说Python爬虫02--requests库基本使用)(22)


Session 对象

在接口测试的过程中,经常会遇到有些接口需要在登录的状态下才能运行,否则会进行相应的提示,例如“请登录“。

比较麻烦的做法:每次接口请求后获取到响应中的cookie,然后下次请求带上这个cookie;

有其他方法???

python爬虫解析实战适合初学者(趣说Python爬虫02--requests库基本使用)(23)

requests的 Session会话对象来进行处理。会话对象让你能够跨请求保持某些参数。

它也会在同一个 Session 实例发出的所有请求之间保持 Cookie。

看看,就这么简单。

python爬虫解析实战适合初学者(趣说Python爬虫02--requests库基本使用)(24)

python爬虫解析实战适合初学者(趣说Python爬虫02--requests库基本使用)(25)


代理设置

“试炼之路”,有很多任务,完成任务可以增加“试炼积分

对于“一级爬者”,必须完成3个“五星任务

五星任务描述:某网站,当受到大规模频繁请求,会禁客户端的 IP,导致一定时间段内无法访问

设置User Agent(用户代理)

python爬虫解析实战适合初学者(趣说Python爬虫02--requests库基本使用)(26)

服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。

怎么办?代理怎么设置?

python爬虫解析实战适合初学者(趣说Python爬虫02--requests库基本使用)(27)

常见的代理:

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

超时设置

python爬虫解析实战适合初学者(趣说Python爬虫02--requests库基本使用)(28)

当网站请求超时时,我们有一件“法宝”可以使用,设置超时时间

特别国外的一些网站,不设置超时时间

那就得“天荒地老,海枯石烂”

python爬虫解析实战适合初学者(趣说Python爬虫02--requests库基本使用)(29)

,