requests

Requests:

虽然Python的标准库中 urllib 模块已经包含了平常我们使用的大多数功能,但是它的 API 使用起来让人感觉不太好,而 Requests 自称 “HTTP for Humans”,说明使用更简洁方便。

requests 的底层实现其实就是 urllib

Requests的文档非常完备,中文文档也相当不错。Requests能完全满足当前网络的需求,支持Python 2.6–3.5,而且能在PyPy下完美运行。

requests的安装方式

  • pip3 install requests

基本GET请求

  1. import requests
  2. response = requests.get(“http://www.baidu.com/”)
  3. response = requests.request( “get”, “http://www.baidu.com/” )

response的常用方法:

方法名方法实现的效果
response.text返回解码后的字符串
response.content返回解码后的字符串
response.status_code响应状态码
response.request.headers请求的请求头
response.headers响应头
response.encoding= ‘utf-8’ 可以设置编码类型
response.encodig获取当前的编码
response.json()内置的JSON解码器,以json形式返回,前提返回的内容确保是json格式的,不然解析出错会抛异常

基本POST请求

1.最基本post方法:

  1. import requests
  2. response = requests.post(url=url, data = data)
  • url:post请求的目标url
  • data:post请求的表单数据

2.传入data数据:

post请求需要添加参数,我们可以利用data表单数据这个参数,把我们需要传递的参数保存。

data = {
	username:abc,
	password:abc123123,
}

3.post请求上传文件:

import requests
url = 'https://httpbin.org/post' 
files = {'file': open('image.png(需要上传的文件)', 'rb')}
response = requests.post(url, files=files) 
print(response.text)

4.post请求 web客户验证:

import requests
auth=('text', '123456')
response = requests.get(
	 'http://192.168.0.1',
	  auth = auth 
  )
  print(response.text)

5.设置代理:
如果需要代理的话,可以通过为请求方式提供proxies参数来配置请求

import requests
proxies = {
		 "http": "http://127.168.0.1:1586",
		 "https": "http://192.168.147.47:4574",
   }
 response = requests.get(
			url='http://www.baidu.com',
			proxies = proxies
)
print(response.text)

6.Cookies:
有时候有些网站需要登录才能获取数据,这时候我们就需要模拟登录,模拟登录需要拿到用户的cookies/session.

import requests
#获取Cookies
cookies = response.cookies
print(cookies)
cookies_dict = {}
for cookie in cookies:
    cookies_dict[cookie.name] = cookie.value
    # print(cookie.name,cookie.value)
print(cookies_dict)

#dict_from_cookiejar:把RequestsCookieJar对象转成字典
cookies_dict2 = requests.utils.dict_from_cookiejar(cookies)
print(cookies_dict2)
#拿到Cookies之后,我们就可以发起请求
#方式一:从浏览器获取cookies,放在请求的头部
#方式二,通过设置请求的cookies参数,
#cookies: (optional) Dict or CookieJar object
response = requests.get(
    url=url,headers=headers,
    cookies=cookies_dict2#这就是我们处理过后的cookies
)
print(response.status_code)
print('设置cookies后的请求头部',response.headers)

7.session:
在requests请求中,我们往往需要让上下请求保持联系

import requests

#实例化session()对象
session = requests.session()

headers = {
    'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36'
}
response = session.get('http://www.baidu.com/',headers=headers)

print(response.headers)
print(session.cookies) #session.cookies 保存的是服务器,返回的cookies信息


#当session.cookies有用户信息之后,我们再使用session.get()或者session.post()
#发起请求时,就会自动携带cookies等信息
response = session.get('http://www.baidu.com/',headers=headers)


# 一般情况下,我们会再模拟登录时用到request.session,先完成登录,
# 然后使用session发起请求

8.处理HTTPS请求 SSL证书验证:
Requests也可以为HTTPS请求验证SSL证书:
要想检查某个主机的SSL证书,你可以使用 verify 参数(Defaults to True)

import requests
response = requests.get("https://www.baidu.com/", verify=True)

如果出现以下错误,表示验证证书出错:

SSLError: (“bad handshake: Error([(‘SSL routines’, ‘ssl3_get_server_certificate’, ‘certificate verify failed’)],)”,)

要想跳过书验证,把 verify 设置为 False 就可以正常请求了。

import requests
response = requests.get(“https://www.12306.cn/mormhweb/”, verify = False)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值