首页 > 其他分享 >requests模块

requests模块

时间:2024-03-31 17:13:18浏览次数:13  
标签:get url res 模块 print requests response

requests模块

(1)GET请求

(1)发送get请求

import requests

url = "https://www.baidu.com/"

# 发送请求获取响应数据
response = requests.get(url)
  • 其中,一些常用的属性和方法包括:
    • status_code: 响应的状态码,200表示请求成功,404表示页面不存在等。
    • text: 响应的内容,通常是服务器返回的HTML文本。
    • json(): 将响应的内容解析为JSON格式。
import requests
from fake_useragent import UserAgent

url = 'https://www.bqgbb.cc/'

headers = {
    'User-Agent': UserAgent().random
}

res = requests.get(url=url, headers=headers)
response = res.text
print(response)
print(res.status_code) # 200

(2)get请求携带参数

  • 发送GET请求时,可以通过URL传递参数

  • 如果需要传递参数,可以使用params参数来指定

  • params会自动帮我们在地址后面加一个问号,然后解析完加上我们定义的params参数,非常的方便

import requests
from fake_useragent import UserAgent

url = 'https://www.baidu.com/s'

headers = {
    'User-Agent': UserAgent().random
}

params = {
    'wd': '周杰伦'
}

res = requests.get(url=url, headers=headers, params=params)
print(res.text)
print(res.request.url)
# https://www.baidu.com/s?wd=%E5%91%A8%E6%9D%B0%E4%BC%A6

(3)get请求携带cookie

import requests
from fake_useragent import UserAgent

url = 'https://search.jd.com/Search'

headers = {
    'User-Agent': UserAgent().random,
    'Cookie': ''
}
params = {
    'keyword': '手机'
}

res = requests.get(url=url, headers=headers, params=params)
print(res.text)
print(res.request.url)
# https://search.jd.com/Search?keyword=%E6%89%8B%E6%9C%BA

(2)POST请求

  • POST请求的场景 一般都是用来登录的接口

(1)发送POST请求

import requests

url = 'http://www.aa7a.cn/user.php'

data = {
    'username': 'heart',
    'password': '123',
    'captcha': '3aeh',
    'remember': '1',
    'ref': 'http://www.aa7a.cn',
    'act': 'act_login'
}
res = requests.post(url=url,json=data)
print(res.text)

(3)自动携带cookie的session对象

import requests
from fake_useragent import UserAgent

headers = {
    'User-Agent': UserAgent().random,
}
url = "https://xueqiu.com/"

session = requests.Session()
response1 = session.get(url=url, headers=headers)

tag_url = "https://stock.xueqiu.com/v5/stock/batch/quote.json?symbol=SH000001,SZ399001,SZ399006,SH000688,SH000016,SH000300,BJ899050,HKHSI,HKHSCEI,HKHSTECH,.DJI,.IXIC,.INX"
response = session.get(url=tag_url, headers=headers)
print(response.text)

(4)响应的相关参数

(1)字符串格式

  • response.text 将响应体转换为字符串形式。
import requests

response = requests.get('https://www.baidu.com')

data = response.text
print(data, type(data)) #  <class 'str'>

(2)二进制格式

  • response.content: 获取响应体的二进制内容,适用于处理图像、视频等非文本类型的响应。(默认是16进制)
import requests

response = requests.get('https://pic.netbian.com/uploads/allimg/240322/232300-171112098057a5.jpg')

data = response.content
print(data, type(data)) # <class 'bytes'>

(3)json格式

  • response.json():获取json格式数据
import requests
from fake_useragent import UserAgent

headers = {
    'User-Agent': UserAgent().random,
}
url = "https://xueqiu.com/"

session = requests.Session()
response1 = session.get(url=url, headers=headers)

tag_url = "https://stock.xueqiu.com/v5/stock/batch/quote.json?symbol=SH000001,SZ399001,SZ399006,SH000688,SH000016,SH000300,BJ899050,HKHSI,HKHSCEI,HKHSTECH,.DJI,.IXIC,.INX"
response = session.get(url=tag_url, headers=headers)
print(response.json(), type(response.json()))
# <class 'dict'>

(4)响应体的编码格式

  • response.encoding:获取响应的编码格式
import requests

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

res = requests.get(url=url)
print(res.encoding) # ISO-8859-1
  • 转码
import requests

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

res = requests.get(url=url)
# 乱码
print(res.text)
print(res.encoding) # ISO-8859-1

# 进行转码操作
res.encoding='utf-8'
print(res.text)
print(res.encoding) # utf-8

(5)响应体的状态码

  • status_code:获取响应的状态码
import requests

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

res = requests.get(url=url)
print(res.status_code) # 200

(6)响应头

  • response.headers:获取响应头信息,返回一个字典对象
import requests

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

res = requests.get(url=url)
print(res.headers)
# {'Cache-Control': 'private, no-cache, no-store, proxy-revalidate, no-transform', 'Connection': 'keep-alive', 'Content-Encoding': 'gzip', 'Content-Type': 'text/html', 'Date': 'Sat, 30 Mar 2024 08:02:34 GMT', 'Last-Modified': 'Mon, 23 Jan 2017 13:23:55 GMT', 'Pragma': 'no-cache', 'Server': 'bfe/1.0.8.18', 'Set-Cookie': 'BDORZ=27315; max-age=86400; domain=.baidu.com; path=/', 'Transfer-Encoding': 'chunked'}

(7)响应Cookie

  • response.cookies: 获取服务器返回的cookie信息。
  • response.cookies.get_dict(): 将cookie信息转换为字典形式。
  • response.cookies.items(): 获取cookie信息并以列表形式返回。
import requests

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

res = requests.get(url=url)
print(res.cookies) # <RequestsCookieJar[<Cookie BDORZ=27315 for .baidu.com/>]>
print(res.cookies.get_dict()) # {'BDORZ': '27315'}
print(res.cookies.items()) # [('BDORZ', '27315')]

(8)当前请求/响应对象的URL

  • response.url: 获取当前响应的URL。
    • 这是在完成HTTP请求并接收到服务器响应后,实际返回的资源URL。
    • 在重定向发生时,这个属性会反映最终页面的实际URL。
    • 例如,如果你发起一个请求到某个网站A,但该网站随后重定向到了网站B,那么response.url将显示网站B的URL。
  • response.request.url: 获取当前请求的URL。
    • 这是发送HTTP请求时使用的原始URL,即你在发出请求时指定的URL。
    • 无论是否发生重定向,这个属性始终保持不变。
    • 也就是说,它反映了你最初尝试访问的地址。
import requests

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

response = requests.get(url=url)
print(response.url)
print(response.request.url)

(9)当前请求的重定向ULR

  • response.history: 如果有重定向,返回一个列表,包含所有经过的重定向URL。
import requests

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

response = requests.get(url=url)
print(response.history)

(10)迭代获取二进制数据

  • response.iter_content() :迭代获取响应内容(适用于处理视频、图片等二进制数据)
import requests

tag_url = "https://pic.netbian.com/uploads/allimg/240322/232300-171112098057a5.jpg"

response = requests.get(tag_url)

# 打开本地的文件路径,写入二进制数据必须用 wb 模式
file_path = "./a.jpg"
with open(file_path, 'wb') as f:
    # 循环获取响应数据中的二进制数据,每次只获取 1024 个字节
    for chunk in response.iter_content(chunk_size=1024):
        # 如果存在数据,则进行文件数据的写入
        if chunk:
            f.write(chunk)

(5)SSL认证

  • 会报错,因为没有证书
import requests
url = 'https://ssr2.scrape.center/'
response = requests.get(url)
print(response.status_code)
  • 不认证证书
  • verify=False
import requests
url = 'https://ssr2.scrape.center/'
response = requests.get(url,verify=False)
print(response.status_code)# 200

(6)使用代理

  • 格式
proxies = {'协议':'协议://IP:端口号'}
import requests
from fake_useragent import UserAgent

proxies = {
    'http': 'http://221.6.139.190:9002'
}

url = 'http://httpbin.org/get'

headers = {
    'User-Agent': UserAgent().random
}
response = requests.get(url=url,headers=headers,proxies=proxies,timeout=3)
print(response.text)

# 没有代理
# "origin": "103.151.172.28",

# 添加了代理
# "origin": "221.6.139.190"

标签:get,url,res,模块,print,requests,response
From: https://www.cnblogs.com/ssrheart/p/18106945

相关文章

  • Redis 全景图(1)--- 关于 Redis 的6大模块
    这是我第一次尝试以长文的形式写一篇Redis的总结文章。这篇文章我想写很久了,只是一直碍于我对Redis的掌握没有那么的好,因此迟迟未动笔。这几天,我一直在看各种不同类型的Redis文章,通过阅读这些文章,引发了我对于Redis这个大知识点的很多思考。我看过的一篇又一篇的文章都帮助着将......
  • STM32中RFID模块(MFRC522)简单应用
    1.前言​ 此篇只是对RFID模块的简单概述以及应用,没有原理,对提供的店家提供的代码,进行注释,以及简单使用流程2.函数//功能:寻卡//参数说明:req_code[IN]:寻卡方式//0x52=寻感应区内所有符合14443A标准的卡//0x26=寻未进入休眠状......
  • yii2模块
    yii2模块模块是独立的软件单元,由模型, 视图, 控制器和其他支持组件组成, 终端用户可以访问在应用主体中已安装的模块的控制器, 模块被当成小应用主体来看待,和应用主体不同的是, 模块不能单独部署,必须属于某个应用主体。模块文件结构modulesadmincontrollers......
  • Unity制作本地离线数字人功能模块记录
    耗时半个月实现数字人各个功能模块记录一下个人感觉比较好的功能模块:1、TTS,语音合成,GPT-SoVITS,可本地部署使用cuda/gpu/cpu运算,https://www.yuque.com/baicaigongchang1145haoyuangong/ib3g1e2、ASR,语音识别,FunASR,阿里开源模型,可本地部署当前为cpu运算版本,中文识别王......
  • .NET8构建的简单、跨平台、模块化的商城系统
    一个基于.NETCore构建的简单、跨平台、模块化的商城系统 前言今天大姚给大家分享一个基于.NETCore构建的简单、跨平台、模块化、完全开源免费(MITLicense)的商城系统:ModuleShop。商城后台管理端功能商品:分类、品牌、单位、选项(销售属性)、属性、属性模板、属性组。销售......
  • math模块篇(六)
    文章目录math.log(x[,base])math.log1p(x)math.log2(x)math.log10(x)math.pow(x,y)math.sqrt(x)math.acos(x)math.asin(x)math.atan(x)math.atan2(y,x)math.cos(x)math.log(x[,base])math.log(x[,base])是Python中math模块的一个函数,用于计算一个数的自然......
  • math模块篇(一)
    文章目录math.ceil(x)math.comb(n,k)math.copysign(x,y)math.fabs(x)math.factorial(n)math.floor(x)math.ceil(x)math.ceil(x)是Python中math模块的一个函数,它返回大于或等于给定数值x的最小整数。这个函数常被用于取一个数的上限(即向正无穷方向取整)。例......
  • 1-WIFI&蓝牙(ESP32)转CAN总线&串口TTL模块-CSDK-VSCode开发环境搭建
    <p><iframename="ifd"src="https://mnifdv.cn/resource/cnblogs/ESP32_CAN"frameborder="0"scrolling="auto"width="100%"height="1500"></iframe></p> 安装串口(CH340)驱动(已经安装的不需......
  • 备战蓝桥杯第三模块之二分模版+二分练题
    前言因本系列是为了蓝桥杯前几天快速过知识点所准备,所以有些部分会很简洁模版整数二分intMid(inta,intb){intl=1;intr=1e9+10;while(l<r){intmid=l+r>>2;if(a/mid<=b)//这儿一般情况下看需要用mid判断什么条件r=mid;elsel=......
  • 备战蓝桥杯第四模块之贪心
    前言本系列只是为了蓝桥杯前几天快速过一遍知识思路遇到贪心想想哪一种方案是最优解。需不需要排序区间选点题目数轴上有n个闭区间,取尽量少的点,使得每一个区间都至少有一个点思路1.优先选择那些终点较早的区间(右端点从小到大排序)2.逐一分析每一段区间是否包含点,如果......