持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第12天,点击查看活动详情
requests请求模块4
写在前面
一个学生,请多多关照,希望能在掘金记录自己的学习历程!❤️
这一篇是接着上一篇的基础写的,也就是Python爬虫基础-requests模块-3这一篇,没有看过的请先去康康
会话请求
在实现获取某个登录后页面的信息时,可以通过使用设置Cookies的方式先实现模拟登录,然后再获取登录后页面的信息内容,虽然这样可以成功地获取页面中的信息,但是比较繁琐。
通过Seesion对象实现会话请求
requests模块中提供了Seesion对象,通过该对象可以实现在同一回话中发送多次网络请求的功能,相当于在浏览器中打开了一个新的选项卡,此时再获取登录后页面中的数据时,就可以发送两次请求,第一次时登陆请求,第二次就可以在不设置Cookies的情况下获取页面数据,示例代码如下:
import requests # 导入requests模块
s = requests.Session() # 创建会话对象
data={'username': 'zyf', 'password': 'zyf'} # 创建用户名、密码的表单数据
# 发送登录请求
response =s.post('http://site2.rjkflm.com:666/index/index/chklogin.html',data=data)
response2=s.get('http://site2.rjkflm.com:666') # 发送登录后页面请求
print('登录信息:',response.text) # 打印登录信息
print('登录后页面信息如下:\n',response2.text) # 打印登录后的页面信息
这样就会返回登录后的页面数据
网络超时与异常
在访问一个网页时,如果该网页长时间为相应,系统就会判断网页超时,无法打开网页,下面通过代码来模拟一个网络超时的现象,实例代码如下:
import requests # 导入网络请求模块
# 循环发送请求50次
for a in range(0, 50):
try: # 捕获异常
# 设置超时为0.5秒
response = requests.get('https://www.baidu.com/', timeout=0.1)
print(response.status_code) # 打印状态码
except Exception as e: # 捕获异常
print('异常'+str(e)) # 打印异常信息
程序结果如下图:
模拟中进行了50次循环请求,超时时间为0.1秒,所以在0.1秒之内服务器未作出相应视为超时