Python的requests
模块是一个非常流行的HTTP库,用于发送HTTP/1.1请求。
一、模块导入
1、requests模块的下载:
使用包管理器下载,在cmd窗口,或者在项目的虚拟环境目录下:
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple requests
2、文件内导入requests包:
import requests
二、GET请求
在不需要传递参数,或则传递少量参数时使用
案例:
import requestsresponse=requests.get(url='https://www.xiaohongshu.com/explore')
print(response.text)
首先导入了requests包,使用get请求语法:requests.get()。括号中可以包括:url参数(访问的地址),params参数(传递的参数),headers(请求头)等,这些参数是有顺序的,如果不指定关键字需要按顺序填入参数,如果只填一个,那一定是url。response接受了requests响应的数据。
如果单独输出response:
输出response.text:那么就会输出你访问的页面的所有代码
需要传参的get请求:
import requests
data = {"key1":"value1","key2":"value2"}
response = requests.get("https://httpbin.org/get",params=data)
print(response.url)
上述代码传递了 一个data对象为参数,使用params的关键字参数。data是我们自己定义的。里面存入了我们要传递的数据。
三、POST请求
需要传递大量参数时使用
import requests
data ={"name":"测试"}
response = requests.post("https://httpbin.org/post",data=data)
print(response.text)
使用方法与get大致相同,只是传递参数的关键字不同,为:data。
四、获得具体数据和保存到本地
1、获取图片
比如我们要获得一个具体的网页上的图片,我们需要找到图片的根地址,然后访问图片的根地址就可以了
案例:
import requests
#获得图片
response=requests.get('https://img20.360buyimg.com/imgzone/jfs/t1/186375/10/42901/145312/66666146F5138cf6a/5fedc8c498a474c5.jpg')
with open('tupian.jpg','wb') as f:f.write(response.content)
上述代码中url就是图片的根地址。使用 with
语句打开文件,因为它可以自动管理文件的打开和关闭。open()语句中的第一个参数是要打开的文件地址,第二个参数为打开方式。f就是我们要打开的文件引用。f.write语句就将我们接受到的响应数据的response的content值写入到该文件中,因为图片是二进制数据,所以我们打开时的方式是写入二进制(wb),.content也代表获得的二进制数据。
2、获取JSON
当我们需要将拿到的数据转为json字符串时:
import requests#获得JSON
response=requests.get("https://httpbin.org/ip")
data=response.json()
print(data)
response.json()可以将拿到的数据转为json字符串形式。当我们输出时会得到:
{'origin': '本机ip'}
因为https://httpbin.org/ip会返回请求的来源 IP 地址。所以输出的就是您的本机ip
转为json串后我们可以对他进行按键取值,比如我们只要origin的值,那么我们可以输出:
print(data['origin'])
五、自定义请求头信息
import requests
header={"user-agent":"hoho/v1"
}
response = requests.get('http://httpbin.org/get',headers=header)
print(response.headers)#获得请求头信息
print(response.request.headers)#获得响应头信息
在我们请求时,可以设置headers关键字设置请求头信息。上述代码我们就将头信息中的user-agent设置为:hoho/v1。如果要查看我们设置的头信息,需要使用第二个输出语句。
六、查看和设置cookie
cookie值是一些用户的登录信息等
1、查看
import requests
#访问目标
url = 'https://www.baidu.com'
header={"User-Agent":"Mozilla/5.0"
}
response=requests.get(url=url,headers=header)
print(response.cookies)
print(response.cookies['BAIDUID'])
我们获取cookie需要头信息中的User-Agent与浏览器的一致,所以我们需要设置头信息。获取cookie值:response.cookies
2、设置
import requests
#设置cookies,发起请求时携带cookie数据访问服务端
url='http://httpbin.org/cookies'
cookie=dict(cookies_arg='hello python')
response=requests.get(url=url,cookies=cookie)
print(response.text)
上述代码中定义了一个叫cookie的字典,有一个键名为:cookies_arg,值为:hello python。在访问时,设置关键字cookies的值为我们定义好的字典对象:cookie。如果设置的值完全与目标一样就可以。