Requests库实现数据抓取与处理功能
作者:愤怒的阿木木 发布时间:2021-09-24 01:44:09
引言
Requests是Python中一个常用的第三方库,用于向Web服务器发起HTTP请求并获取响应。该库的使用简单,功能强大,被广泛应用于网络爬虫、API访问、Web应用开发等领域。
本文将介绍Requests库的基本用法、常见功能和高级应用,并提供实例代码来展示这些功能。
安装
Requests库可以通过pip安装,执行以下命令即可:
pip install requests
基本用法
使用Requests库发起HTTP请求非常简单。以下是一个使用Requests库向百度发起HTTP GET请求并获取响应的示例:
import requests
response = requests.get('http://www.baidu.com')
print(response.status_code) # 输出响应状态码
print(response.text) # 输出响应内容
上述代码中,requests.get方法用于向指定的URL发起HTTP GET请求,并返回响应对象。响应对象包含响应的状态码、响应头和响应体等信息。我们可以通过调用响应对象的属性和方法来获取和处理这些信息。
在上述示例中,我们调用了响应对象的status_code属性获取响应状态码,并调用了text属性获取响应内容。最后,我们将这些信息输出到控制台。
发送HTTP请求
Requests库支持多种HTTP请求方法,包括GET、POST、PUT、DELETE、HEAD、OPTIONS等。我们可以通过调用相应的方法来发起指定的HTTP请求。
以下是一个使用Requests库向服务器发送POST请求并提交JSON数据的示例:
import requests
url = 'http://example.com/api'
headers = {'Content-Type': 'application/json'}
data = {'name': 'John', 'age': 30}
response = requests.post(url, json=data, headers=headers)
print(response.status_code) # 输出响应状态码
print(response.json()) # 输出响应JSON数据
上述代码中,我们向http://example.com/api URL发送POST请求,并提交一个包含name和age字段的JSON数据。我们使用headers参数设置请求头,指定请求体的数据格式为JSON。使用json参数提交JSON数据,这样Requests库会自动将JSON数据转换为请求体。
响应对象的json方法用于解析响应体中的JSON数据。如果响应体不是JSON格式,则会抛出异常。我们可以使用text属性获取响应体的原始文本。
处理HTTP响应
Requests库的响应对象提供了一系列属性和方法,用于获取和处理响应的状态码、响应头和响应体等信息。以下是一些常用的响应对象方法:
status_code:获取响应状态码。
headers:获取响应头信息。
text:获取响应体的原始文本。
content:获取响应体的二进制数据。
json:获取响应体中的JSON数据,并将其解析为Python对象。
encoding:获取响应体的编码方式。
raise_for_status():如果响应状态码不是2xx,抛出异常。
iter_content():按块读取响应体的数据。
iter_lines():按行读取响应体的数据。
这些方法和属性使得我们能够方便地提取和处理HTTP响应的各个部分。
高级功能
Requests库还提供了一些高级功能,进一步增强了其实用性。
1.会话管理
通过创建会话对象,我们可以在多个请求之间保持会话状态。这对于处理需要认证、Cookie管理等场景非常有用。以下是一个使用会话对象的示例:
import requests
session = requests.Session()
session.headers.update({'User-Agent': 'Mozilla/5.0'})
session.get('http://www.example.com/login', params={'username': 'john', 'password': 'password'})
session.post('http://www.example.com/data', data={'key': 'value'})
在上述示例中,我们创建了一个会话对象session,并通过调用get和post方法发送GET和POST请求。会话对象会自动保持会话状态,并且可以在多个请求之间共享Cookie、HTTP头等信息。
2.代理设置
Requests库支持设置代理服务器,以便在发起请求时通过代理进行访问。以下是一个使用代理的示例:
import requests
proxies = {'http': 'http://proxy.example.com', 'https': 'https://proxy.example.com'}
response = requests.get('http://www.example.com', proxies=proxies)
在上述示例中,我们通过proxies参数设置HTTP和HTTPS请求的代理服务器。Requests库将使用指定的代理服务器来发起请求。
3.SSL证书验证
默认情况下,Requests库会验证SSL证书的有效性。如果你想禁用证书验证或使用自定义的证书,可以通过verify参数来设置。以下是一个禁用证书验证的示例:
import requests
response = requests.get('https://www.example.com', verify=False)
在上述示例中,我们通过将verify参数设置为False,禁用了对SSL证书的验证。
来源:https://blog.csdn.net/qq_44364267/article/details/130642362


猜你喜欢
- 在金融领域中,我们的y值和预测得到的违约概率刚好是两个分布未知的两个分布。好的信用风控模型一般从准确性、稳定性和可解释性来评估模型。一般来说
- 回表在研究mysql二级索引的时候,发现Mysql回表这个操作,往下研究了一下字面意思,找到索引,回到表中找数据解释一下就是:先通过索引扫描
- 柱状图分类QBarSeries:竖向柱状图QPercentBarSeries:竖向百分比柱状图QStackedBarSeries:竖向堆叠柱
- 最近关于浏览器的最重要的事情就是IE的极光0day漏洞了,这个漏洞导致包括Google在内的多家美国公司受到黑客的攻击,当然也有很多网站被黑
- 本文实例讲述了php实现压缩多个CSS与JS文件的方法。分享给大家供大家参考。具体实现方法如下:1. 压缩css<?php
- golang 中多个 defer 的执行顺序引用 Ture Go 中的一个示例:package mainimport "fmt&q
- 前言:索引下推(ICP)是针对MySQL使用索引从表中检索数据行的情况的优在没有索引下推的情况下,MySQL通过存储引擎遍历索引来定位表中的
- 1.登陆网站,开启开发者模式。可以在浏览器中点击右键检查或者F12打开开发者模式。2.点选 NetWork,DOC,然后刷新页面。在 net
- 来一个简单的例子,看Python如何操作数据库,相比Java的JDBC来说,确实非常简单,省去了很多复杂的重复工作,只关心数据的获取与操作。
- tkinter禁用(只读)下拉列表Comboboxtkinter将下拉列表框Combobox控件的状态设置为只读,也就是不可编辑状态:# 定
- 1、将mysql数据导出到SQL文件中(数据库存在的情况)主要需要修改数据库的相关信息,端口号、用户名、密码等其中数据库得存在,不然会报错
- 目录什么是 JSON在哪里使用JSON基本的 JSON 语法如何在 Python 中处理 JSON 数据包含 JSON 模块使用 json.
- aspx: <div id="selDiv" style=" z-index:100; visibili
- 一、自动备份:将以下代码保存为*.bat批处理脚本,然后再添加Windows定时作业,如每天凌晨2点执行: set s=%date:~0,4
- 1、自定义 图表 组件Echarts.vue<!-- 自定义 echart 组件 --><template> <
- 1、查看当前所有连接的详细资料:./mysqladmin -uadmin -p -h10.140.1.1 processlist2、只查看当
- 守护进程模式使用python开发后台服务程序的时候,每次修改代码之后都需要重启服务才能生效比较麻烦。看了一下Python开源的Web框架(D
- 前言最近在开发环境 oracle 启动侦听的时候,出现了 TNS:permission denied 的问题,通过网上和咨询朋友,最终找到了
- 单线程同步使用socket传输数据使用json序列化消息体struct将消息编码为二进制字节串,进行网络传输消息协议// 输入{  
- 前言在测试过程中,注意力往往都在功能上,如果功能正常,是基本不会查看日志的,反之会查看日志定位问题。但是表面上的功能正常不能确保日志没有报错