request

1. requests

requests是基于urllib的再一次封装,具有urllib的一切特性,并且API调用更加方便,一个基于网络请求的模块,模拟浏览器发起请求

2.为什么使用requests模块?

1.自动处理url编码
2.自动处理post请求参数
3.简化cookie和代理的操作

cookie的操作:
  • 创建一个cookiejar对象
  • 创建一个handler对象
  • 创建一个opener对象
代理的操作:
  • 创建handler对象,代理ip和端口封装到该对象
  • 创建opener对象

3.使用流程:

安装:pip3 install requests

  • 指定url
  • 使用requests模块发起请求
  • 获取响应的二进制数据
  • 进行持久化存储
requests包括五中请求:get,post,ajax的get请求,ajax的post请求,综合import requests
  • 指定url
    url = ‘https://www.sogou.com/’
  • 发起get请求:get方法会返回请求成功的相应对象
    response = requests.get(url=url)
  • 获取响应中的数据值:text可以获取响应对象中字符串形式的页面数据
page_data = response.text
print(page_data)
  • requests对象中其他重要属性:
  • text可以获取响应对象中字符串形式的页面数据
  • content获取的是response对象中二进制(byte)类型的页面数据
  • response.status返回一个响应状态码
  • response.headers返回响应头信息

urllib_cookies使用

from urllib import request
from http import cookiejar
import ssl

#创建HTTPSHandler处理器,支持发起https请求,忽略ssl认证
context = ssl._create_unverified_context()
https_handler = request.HTTPSHandler(
    debuglevel=1,
    context=context,
)

#创建cookie jar对象,用来存储cookie
cookie_jar = cookiejar.CookieJar()
#创建HTTPCookieProcessor处理器,用来使用和处理cookie
cookie_handler = request.HTTPCookieProcessor(cookiejar=cookie_jar)

opener = request.build_opener(https_handler,cookie_handler)

headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36'
}
req = request.Request(
    url='http://www.baidu.com',
    headers=headers
)

request.install_opener(opener)
response = request.urlopen(req,timeout=10)
print(response.code)

request_get()使用

import requests

url = 'http://college.gaokao.com/schlist'

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36'
}

response = requests.get(url=url,params=None,headers=headers)

#获取响应结果
print(response.text) #页面源码
print(response.status_code) #状态码
print(response.headers) #响应头
print(response.request.headers) #获取请求头
print(response.content) #获取页面的二进制数据

request_post()使用

import requests

from_data = {
    'username':'admin3',
    'password':'admin123456',
}

headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36'
}

url = 'http://127.0.0.1:8000/api/login/'
response = requests.post(url=url,data=from_data,headers=headers)

#获取响应结果
print(response.text) #页面源码
print(response.status_code) #状态码
print(response.headers) #响应头
print(response.request.headers) #获取请求头
print(response.content) #获取页面的二进制数据

# print(response.json()['token'])


#文件上传post请求

url = 'http://httpbin.org/post'
files = {'file':open('page.html','r',encoding='gbk')}

response = requests.post(url=url,files=files,headers=headers)

if response.status_code == 200:
    print('上传成功')
    print(response.text)

代理的使用

import requests

url = 'https://www.taobao.com'

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36'
}
proxies = {
    'http':'192.168.2.111:8082',
    'http':'192.168.2.113:8083',
}

response = requests.get(url=url,params=None,headers=headers,proxies=proxies)



#获取响应结果
print(response.text) #页面源码
print(response.status_code) #状态码
print(response.headers) #响应头
print(response.request.headers) #获取请求头
print(response.content) #获取页面的二进制数据

#获取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参数,

requests.get(url=url,headers=headers,cookies=cookies_dict2)

print(response.status_code)
print('设置cookies后的请求头部',response.headers)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值