学了这么长时间的爬虫,用的最多的就是scrapy框架,对于最原始的requests模块自己并没有很重视,趁着现在有空,来整理一下有用的知识

官方中文文档:http://cn.python-requests.org/zh_CN/latest/

timeout

自己以前重来不用这个属性。这个属性的作用是给请求规定时间,如果在规定时间内服务器没有返回响应,则跑出异常,如果你不设置,你的代码会一直等待服务器的响应。

为防止服务器不能及时响应,大部分发至外部服务器的请求都应该带着 timeout 参数

timeout包括两种连接超时和读取超时

连接超时指的是在你的客户端实现到远端机器端口的连接时(对应的是`connect()`_),Request 会等待的秒数。

读取超时指的就是客户端等待服务器发送请求的时间。(特定地,它指的是客户端要等待服务器发送字节之间的时间。在 99.9% 的情况下这指的是服务器发送第一个字节之前的时间)。

r = requests.get('https://github.com', timeout=5)#连接和读取设置的都为5秒

r = requests.get('https://github.com', timeout=(5,8)#连接5秒,读取8秒

 

requests.exceptions.ReadTimeout: HTTPSConnectionPool(host='api.github.com', port=443): Read timed out. (read timeout=0.1)

headers和json

我们可以根据response中的headers中的content-type的类型来判断,是使用response。text,还是response。json来得到数据

 

posted on 2019-07-16 18:55  程序员一学徒  阅读(122)  评论(0)    收藏  举报