更多Requests的小技巧以及总结

对于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.使用搜狗翻译将英文翻译成中文。

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

时间: 2024-10-05 05:50:00

更多Requests的小技巧以及总结的相关文章

Python Requests 小技巧总结

关于 Python Requests ,在使用中,总结了一些小技巧把,分享下. 1:保持请求之间的Cookies,我们可以这样做. import requests self.session = requests.Session() self.session.get(login_url) # 可以保持登录态 2:请求时,会加上headers,一般我们会写成这样 self.session.get(url, params, headers=headers) 唯一不便的是之后的代码每次都需要这么写,代码

不为人知的python request小技巧

关于 Python requests ,在使用中,总结了一些小技巧把,记录下. 1:保持请求之间的Cookies,我们可以这样做. 2:请求时,会加上headers,一般我们会写成这样 唯一不便的是之后的代码每次都需要这么写,代码显得臃肿,所以我们可以这样: 3:默认requests请求失败后不会重试,但是我们跑case时难免遇到一些网络或外部原因导致case失败,我们可以在Session实例上附加HTTPAdapaters 参数,增加失败重试次数. 这样,之后的请求,若失败,重试3次. 4:重

B2B平台信息发布小技巧——ERE全体系引流

导读:通过搜索引擎搜索行业产品名或者竞争对手的公司名,查找是否有在B2B平台发布的产品信息及哪些平台.可以同样发布自己的产品到这些平台.01哪些行业适合使用B2B推广 01判断目标客户来源 正在做B2B平台推广的朋友们应该会有体会,我们在B2B平台发布产品信息的一个主要目的是要让其在搜索引擎(百度.360.搜狗)有好的排名和展现,也就是说我们的目标客户的主要来源应该是搜索引擎.所以,想判断自己的行业是否适合做B2B推广的一个重要方法就是判断你的目标客户来源. 02通过B2B平台内部产品分类查看

给你一个云端的大脑01:印象笔记小技巧

我在上课时,很多学员们给我的反馈都是:老师你讲的太精彩啦,但我记不住.我最重视的就是学员的反馈,因为我是一个完美主义者,凡事既然做就要做到最好.而学员就像我的一面镜子,反馈是我改进的方向. 很久以前,我听到这样的反馈第一反应就是自己还是讲得不够好,但后来我的讲课都能hold住全场300多人的时候,我发现这个反馈仍然频繁出现,这不是我的问题而是学员们不会学习的问题,这样的学员在工作中也是缺乏自我培养的能力. 所以从今天起,我的平台又加入一个主题:给你一个云端的大脑.告诉你如何记笔记,如何整理大脑记

avascript小技巧

avascript小技巧 事件源对象 event.srcElement.tagName event.srcElement.type 捕获释放 event.srcElement.setCapture(); event.srcElement.releaseCapture(); 事件按键 event.keyCode event.shiftKey event.altKey event.ctrlKey 事件返回值 event.returnValue 鼠标位置 event.x event.y 窗体活动元素 

最实用的10个重构小技巧排行榜

LZ最近一直在研究虚拟机源码,可惜目前还只是稍微有一点点头绪,无法与各位分享,庞大的JAVA虚拟机源码果然不是一朝一夕能搞定的,LZ汗颜. 本次我们抛开JAVA虚拟机源码这些相对底层的东西,LZ来与各位探讨一下几个代码重构的小技巧,这些内容部分来自于书籍当中,部分来自于LZ维护项目当中的一些实践经验.如果猿友们曾经用过这种手法,也不妨参与到文章的留言当中,将你的小心得.小体会共享与他人,也可以拿来冲击LZ自己定义的排行榜,LZ不甚欢迎. 重构的手法有很多种,相对而言,一篇文章的涵盖量自然是无法提

Python爬虫简单入门及小技巧

刚刚申请博客,内心激动万分.于是为了扩充一下分类,随便一个随笔,也为了怕忘记新学的东西由于博主十分怠惰,所以本文并不包含安装python(以及各种模块)和python语法. 目标 前几天上B站时看到一部很好玩的番剧,名字<笨女孩>,实际上是由同名的搞笑向漫画动画化的.大家都知道动画一般一周一更,很难满足我们的需求,所以我们就来编写一个爬虫,来爬取漫画咯. 那么本文的目标就是爬取<初音MIX>这部漫画(因为笨女孩我已经爬取过了>_<).这部漫画我记得是小学的时候看的,也是

最强 Android Studio 使用小技巧和快捷键【非原创】

(发现本文是个很不错的文章,相当实用,特分享与大家.分享自:http://m.open-open.com/m/lib/view/1458715872710.html 特此声明,好记性不如烂笔头,market下来以备后用) 原文如下: 写在前面 本文翻译自 Android Studio Tips by Philippe Breault,一共收集了62个 Android Studio 使用小技巧和快捷键. 根据这些小技巧的使用场景,本文将这62个小技巧分为常用技巧(1 – 28).编码技巧(29 –

8 个 Git 的小技巧

git 已经成为了我日常必备工具之一,我总结我几乎每天使用的8个有用(且简洁)的git技巧. 使用-p选择性添加 当你想提交内容时,你可以通过使用 git commit -am 来选择所有文件或使用 git add file 来添加特定文件.然而,有时候你可能想只添加文件的一部分来提交.你可以用 git add -p 交互性地选择哪些你想提交的部分. 在选择完你所想要提交的区块后,只需要做一个 git commit(没有 -a),这样只会提交选中的部分.同样可以使用 git checkout -