1、发送POST请求
从前面初学爬虫(二):爬取静态网页之(3)自定义requests——设置传递URL(网络地址)参数and自定义请求头(怎么找+怎么做)中已经讲解过通过get函数设置传递URL(网络地址)参数来实现get请求。
但是get函数存在两个问题:
- get函数无法实现发送一些编码为表单形式的数据
- get函数用在登录时,会直接将密码(或其他隐私内容)显示在URL中,这样十分不安全
post请求就能很好的解决上述get请求存在的两个问题。
话不多说,直接上实例:
未将字典传递给data参数时:
python">import requests #导入requests库
r = requests.post('http://httpbin.org/post') #未将字典传递给data参数
print (r.text)
可以发现表单中是没有数据的
python">import requests #导入requests库
key_dict = {'key1': 'value1', 'key2': 'value2'} #构建字典
r = requests.post('http://httpbin.org/post', data=key_dict) #将字典传递给data参数
print ("发送POST请求后的网址:", r.url)
print (r.text)
可以发现网页内容中有了我们设置的表单形式数据,且发送POST请求后的网址并未发生变化。
2、超时处理
爬虫程序在发出爬取请求后,就会开始等待服务器的响应返回,但有时可能存在服务器一直不返回的情况,这样爬虫程序就会一直等待,造成时间的浪费和效率的降低。
针对上述情况,可以使用timeout参数来解决:若服务器在timeout设置的时间内没有响应,就会返回异常,一般将其设置为20秒。
下面用一段程序来为大家展示抛出的异常长什么样子:
python">import requests
link = "https://www.csdn.net/"
r = requests.get(link, timeout= 0.0001)#设置时间为0.0001秒查看异常
异常: