Python爬虫之Requests简介及各种请求方式与响应信息

一、Requests简介

Python爬虫之Requests简介及各种请求方式与响应信息

urllib库参考:Python 爬虫之urllib库

Requests基于urllib用python语言编写,该模块主要用于发送HTTP请求,requests模块比urllib模块更简洁,是学习python爬虫时较好的http请求模块。

不是 python 的内置库,如果没有安装,可以安装先。

pip install requests

二、各种请求方式

requests提供了各种请求方式,每次调用requests进行请求后,会返回一个response对象,这个对象包含了具体的响应信息,响应信息如下:

1、基本Get 请求

import requests
x等于通过requests获取,请求的网址是http://www.baidu.com 。
print(x.status_code)
print(x.reason)
print(x.apparent_encoding)
print(x.text)

执行结果:

200                                                                                                                                                                                                      
OK                                                                              
utf-8                                                                           
                                                                 
 .....

请求 json 数据文件,返回 json 内容:

通过params参数传递一个字典内容,从而直接构造url

import requests
params = {
名字是张三,
    'age': 100
}
x等于使用params参数向'http://httpbin.org/get'发送GET请求后得到的响应 。
print(x.url)
print(x.json())

执行结果:

这看起来像是一个网址链接:http://httpbin.org/get ,其中带有参数:name=zhangsan 以及 age=100 。
请提供完整准确的内容,以便我能按照要求进行改写。目前给出的内容不完整且存在乱码等情况。

抓取二进制数据

在上面的例子中,我们抓取的是网站的一个页面,它实际返回的是一个HTML文档。若想抓取图片、音频、视频等文件,需用到content,如此获取的数据是二进制数据。

如抓取百度logo图片:

import requests
x进行了请求操作,请求的目标地址是https://www.baidu.com/img/flexible/logo/pc/result.png 。
print(x.content)

执行结果:

这看起来是一串二进制数据,无法直接按照要求进行改写,因为它不是一个完整的、有实际意义可理解的句子表述,请你检查内容或提供更合适的文本以便准确改写 。

得到的是一串二进制乱码,若想得到图片,直接把它保存到本地就行。

import requests
x = requests.get('https://www.baidu.com/img/flexible/logo/pc/result.png')
打开文件名为'baidulogo.png'的文件,以二进制写入模式,将其赋值给变量f ,通过f进行后续操作 。
    f.write(x.content)

执行后,在本地目录,可以看到图片已经下载

添加headers

有些网页,访问时必须借助headers。此时,只需把参赛内容传到headers参数里就行,如下所示:

import requests
headers = {
用户代理为,适用于苹果机,基于英特尔的苹果操作系统X 10_11_4,使用苹果webkit引擎537.36,类似KHTML,由谷歌浏览器52.0.2743.116渲染,使用Safari浏览器537.36 。
}
x等于发送一个GET请求到https://baidu.com/ ,并且设置请求头为headers 。
print(x.text)

2、基本POST请求

在爬虫里,还有一种较为常见的请求方式,那便是POST请求,它与GET用法相近 。

post() 方法能够发送POST请求,该请求会发往指定的url,其一般格式如下:

发出一个POST请求,请求的目标地址是url,请求中携带的数据是data,其内容为键值对key: value,请求中携带的JSON数据是json,其内容为键值对key: value,同时还带有参数args 。

import requests
数据等于,包含键值对的集合,其中键为“name”,值为“zhangsan”,另一个键为“age”,值为“100” 。
x等于向"http://httpbin.org/post"发送POST请求,其中data作为数据,
print(x.text)

执行结果:

{                                                                                                                                                                                                        
  "args": {},                                                                   
  "data": "",                                                                   
  "files": {},                                                                  
  "form": {                                                                     
    "age": "100",                                                                                                                                                                                        
    "name": "zhangsan"                                                          
  },                                                                                                                                                                                                     
  "headers": {                                                                                                                                                                                           
    "Accept": "*/*",                                                                                                                                                                                     
“Accept-Encoding”的值为“gzip”和“deflate” 。
    "Content-Length": "21",
    ....

3、其他请求

其他请求可以自行测试,差不多用法。

r等于发送一个PUT请求到https://httpbin.org/put,请求中携带的数据是一个包含键值对的字典,键为key,值为value 。
r等于requests.delete,请求的目标地址是https://httpbin.org/delete 。
r等于对'https://httpbin.org/get'发送头部请求 ,
r等于对'https://httpbin.org/get'进行options请求的结果 。

三、requests 方法

requests 方法如下表:

import requests
# 发送请求
x等于使用requests库的request方法,发起一个针对https://httpbin.org/的get请求 。
# 返回网页内容
print(x.status_code)

执行结果:

200

设置请求头:

# 导入 requests 包
import requests
 
kw等于一个字典,其中键's'对应的值为'python教程' 。
# 设置请求头
请求头设置为,用户代理为,Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36
 
params接收查询参数,查询参数可以是字典或者字符串,若查询参数是字典类型,会自动转换为url编码,不需要使用urlencode()
发送一个GET请求到"https://httpbin.org" ,请求参数为kw ,请求头为headers ,并将响应结果赋值给response 。
# 查看响应状态码
print (response.status_code)
# 查看响应头部字符编码
print (response.encoding)
# 查看完整url地址
print (response.url)
查看响应内容,response.text返回的是Unicode格式的数据
print(response.text)

执行结果:

 200                                                                                                                                                                                                      
 utf-8                                                                           
这是一个网址链接,它指向https://httpbin.org/?s=python教程
                                                                  
                                                                 
                                                                                 
                                                                           
                                                           
     httpbin.org                                                  
      
        ....

四、requests其他高级用法

1、文件上传

实现方法与其他参数相似,同样是构造一个字典,接着通过files参数进行传递。

import requests
files等于一个字典,该字典有一个键值对,键为"files",值为通过以二进制读取模式打开"git.jpeg"文件而得到的内容。
发送一个POST请求到"http://httpbin.org/post" ,请求中包含files参数 ,将请求结果赋值给response变量 。
print(response.text)

2、获取cookie

import requests
发出请求,获取网页,请求的网址为http://www.baidu.com,将获取的内容赋值给response 。
print(response.cookies)
针对响应中的每个cookie,获取其键值对,对于其中的键,将其赋值给变量key,对于其中的值,将其赋值给变量value 。
    print(key+"="+value)

3、会话维持

cookie的一个作用就是可以用于模拟登陆,做会话维持。

import requests
s = requests.Session()
s发起一个请求,请求的目标地址是http://httpbin.org/cookies/set/number/123456 。
发送请求,请求的目标地址是http://httpbin.org/cookies ,并将响应结果赋值给response 。
print(response.text)

4、证书验证

你可能想看:
« 上一篇
下一篇 »

相关推荐

python爬虫教程PDF,Python爬虫书PDF

2026年09月02日

30阅读

外国教程python,python编程教学视频

2026年09月02日

24阅读

python简明教程沈洁元,python详细基础教程

2026年09月02日

21阅读

python库包教程,python 包

2026年09月02日

26阅读

python教程大全集,python教程600集

2026年09月02日

26阅读

python入门教程完整版,python零基础入门全套教程视频

2026年09月02日

22阅读