爬虫request请求及相关请求

本文详细介绍了使用Python的requests库进行HTTP请求的方法,包括GET和POST参数处理,自定义Header,Cookies的使用,Basic-auth认证,错误处理以及Session的运用。通过实例展示了如何进行网络请求,特别是session机制在跨请求中的作用,以及如何设置超时时间。此外,还提到了在爬虫中如何通过.raise_for_status()捕获错误状态码。

这里分享一下在学习reques的时候做的简单整理。以http://httpbin.org/这个简单的网址为例。

 这个是最简单的请求,响应结果如下,200就是状态码,ok是状态码的描述,其中会用到r.status_code等参数,更多可通过网页查询。j

 带参数的GET请求

结果:

 

 如代码图中所示,我们get请求传上去的params数据显示在了args中。

POST请求

结果:

 用post请求的时候我们穿的参数会自动放在form表单中。

自定义header请求

结果:

这个主要就是设置用户代理(User Agent),很简单,在网页中右击检查,这里就不细说了,可以百度哦!

带cookies的请求

 结果: 

这里我们查看了cookies,cookie机制和下面将到的session机制的作用是一样的,都是用来网站的保持登录,在我们访问一些网站时,比如:豆瓣网。在这些网站都需要用户登录,用户登录就会有账号和密码,网站的cookie就会记录下来,避免用户每次登录都要输入信息。

Basic-auth认证请求

结果:

简单来说就是携带账户和密码进行认证请求,但安全性不高,不建议使用。

主动抛出状态码异常

 结果

 上面代码中输入了404的状态码,就会报出如图中的详细错误,HTTPError: 404  Client Error: NOT FOUND,在我们写代码爬取信息,请求网站的时候,经常会出现状态码的错误,这是我们调用.raise_for_status()就可以检测出详细错误。

使用request.session对象请求

结果:

 session 机制就是将服务器返回的cookies的内容放到session对象中,并在下一次请求时将这些内容放到这次请求的头信息中。和cookies的区别是cookie不可以跨请求,session可以跨请求。cookies是将用户信息放在浏览器端,而session是放在服务器端,在访问不同浏览器是,cookies只能用不同浏览器里面的cookies里的内容,将cookies放到session对象中就可以实现跨浏览器,也就是跨域请求。详细信息或者不懂可以私信小编。

使用timeout

结果:

 这个就不用多说了,就是设置网页响应时间,超过这个时间就报错,时间以秒为单位。

 今天就分享到这里,有问题的可以私信我,如果文中有解释错误的地方欢迎大佬指点。加油!

### 使用方法 在Python中,`requests` 是使用最广泛的HTTP请求库,可用于爬虫请求。以下是一些常见的使用示例: #### GET请求 ```python import requests # 发送GET请求 response = requests.get('https://www.example.com') # 打印响应内容 print(response.text) ``` #### POST请求 ```python import requests # 定义要提交的数据 data = {'key': 'value'} # 发送POST请求 response = requests.post('https://www.example.com', data=data) # 打印响应内容 print(response.text) ``` ### 原理 `requests` 库基于底层的HTTP协议工作。当发起一个请求时,它会构建一个HTTP请求消息,包含请求行、请求头和可选的请求体。请求行指定请求方法(如GET、POST)、URL地址和协议版本;请求头包含一些额外的信息,如用户代理、Cookie等;请求体则用于携带POST请求的数据。 服务器接收到请求后,会根据请求的内容进行处理,并返回一个HTTP响应消息,包含状态码、响应头和响应体。`requests` 库会解析这个响应消息,并将其封装成一个 `Response` 对象,方便用户获取响应的各种信息,如状态码、响应内容等。 ### 相关注意事项 - **请求频率**:过于频繁的请求可能会被服务器识别为爬虫行为,从而导致IP被封禁。可以设置合适的请求间隔时间,模拟人类的浏览行为。 - **请求头设置**:合理设置请求头,如 `User-Agent`,可以伪装成浏览器,避免被服务器轻易识别为爬虫。 ```python import requests headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'} response = requests.get('https://www.example.com', headers=headers) ``` - **错误处理**:网络请求可能会出现各种错误,如连接超时、服务器返回错误状态码等。需要进行适当的错误处理,以保证程序的健壮性。 ```python import requests try: response = requests.get('https://www.example.com') response.raise_for_status() # 检查响应状态码 except requests.exceptions.RequestException as e: print(f"请求出错: {e}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值