Python爬虫基础-requests模块-4

148 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 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))                                                # 打印异常信息

程序结果如下图:

image.png 模拟中进行了50次循环请求,超时时间为0.1秒,所以在0.1秒之内服务器未作出相应视为超时