首页 > 其他 > 详细

更多Requests的小技巧以及总结

时间:2019-01-13 01:31:32      阅读:39      评论:0      收藏:0      [点我收藏+]

标签:自学   http   我们   切换   tro   post   ()   能力   存储   

对于requests的爬虫库,我们已经学到了尾声。

我们在这儿可以挖掘出更多的requests的使用小技巧。

一.cookie对象与字典的转换

在爬取目标cookie的时候,我们可以将cookie信息进行简化处理。

现在做一个简单的代码验证看看,使用百度的cookies:

import requests
response=requests.get("http://www.baidu.com")                                      #获取百度的响应
response_cookie=response.cookies                                                         #获取百度的cookies
print(response_cookie)
response_dict=requests.utils.dict_from_cookiejar(response_cookie)      #将百度获取的cookie转换为字典
print(response_dict)
输出结果:

RequestsCookieJar[<Cookie BDORZ=27315 for .baidu.com/>]>
{‘BDORZ‘: ‘27315‘}

那么,反过来切换呢?

response_cookie_1=requests.utils.cookiejar_from_dict=(response_dict)

print(response_cookie_1)

输出结果:

<RequestsCookieJar[<Cookie BDORZ=27315 for />]>

我们可以分析此次的输出结果可以知道,重新翻译过来url信息丢失了,具有信息保护性。

 

二.url编码的解码处理

我们在做爬虫的过程中,是经常会遇到我们输入的url被解码成另外一种数据形式。

例如:http://tieba.baidu.com/f?kw=无限法则

我们在对这个网址进行爬虫处理之后,在输出结果显示的时候,已经编码成了这个形式:

http%3a%2f%2ftieba.baidu.com%2ff%3fkw%3d%e6%97%a0%e9%99%90%e6%b3%95%e5%88%99

翻译的时候,我们还得上网去翻译过来。那么requests正好也提供了这个功能,能够完成翻译,避免了你去网上翻译的过程。

现在就放一段代码看看:

 

import requests
url_1="http%3a%2f%2ftieba.baidu.com%2ff%3fkw%3d%e6%97%a0%e9%99%90%e6%b3%95%e5%88%99"
url_2=requests.utils.unquote(url_1)
print(url_2)

 

输出结果:

http://tieba.baidu.com/f?kw=无限法则

反过来也是一样的:

url_3=requests.utils.quote(url_2)

print(url_3)

输出结果:

http%3A//tieba.baidu.com/f%3Fkw%3D%E6%97%A0%E9%99%90%E6%B3%95%E5%88%99

所以我们总结起来,就是这样:

quote:对URL编码;  unquote:对解码的URL进行解码

 

三.请求SSL证书验证解决

我们在做爬虫的时候,会经常遇到网站请求SSL证书的验证,这将是爬虫遇到的家常便饭。

那么我们如何跳过这个SSL证书呢,在get参数中加入一个参数即可。

假设我们访问百度,遇到了SSL证书问题,我们要做的就是:

response=requests.get("http://www.baidu.com",verify=False)

 

 

以上就是三个requests的使用小技巧,当然,requests库是强大的,能做的不只是这些。

关于其他的用法,我们在今后使用的时候会慢慢探索出来,具有一定的自学能力是最好的。

回顾一下我们学习requests的过程,我们可以做一个总结:

①填写正确的url形式,是有协议,IP地址,端口和路径等组成的,其中协议不能忘了写。

正确的url形式为"http://www.baidu.com"

 

②学会对自己的伪装,准备一堆User-Agent,一堆IP和一堆cookie。

选择代理IP时,选端口跟自己网络端口符合的。

 

③两种请求方式的公式和参数有如下:

requests.get(url,headers=?(存储User-Agent参数),params=?(存储wd访问参数),proxies=?(存储IP地址参数),cookies=?(存储cookies参数),verify=?(解决SSL证书验证))

requests.post(url,headers=?(存储User-Agent参数),data=?(存储form表单参数),proxies=?(存储IP地址参数),cookies=?(存储cookies参数),verify=?(解决SSL证书验证))

当然,这些参数都是以字典的形式而作为参数。

 

④显示源码最好的方式就是respsonse.content.decode(),如果要将json文本转为python文本,使用json库的json.loads()方法。

保存源码的方式是with open,标准的格式为:

with open ("?"(文件的名字),"w"(进入可读模式),encoding="utf-8"(不可缺,不然在编辑器上显示不出来))as f :

    f.write(response.content.decode())

 

那么,requests模块就学到这儿,但是正确的学习方式是学以致用,我将给自己布置下面两个作业:

1.抓取绝地求生贴吧的前5页源码。

2.使用搜狗翻译将英文翻译成中文。

 

更多Requests的小技巧以及总结

标签:自学   http   我们   切换   tro   post   ()   能力   存储   

原文:https://www.cnblogs.com/Masterpaopao/p/10261558.html

(0)
(0)
   
举报
评论 一句话评论(0
0条  
登录后才能评论!
© 2014 bubuko.com 版权所有 鲁ICP备09046678号-4
打开技术之扣,分享程序人生!
             

鲁公网安备 37021202000002号