首页 > 编程语言 >python request库的使用

python request库的使用

时间:2024-09-23 15:55:05浏览次数:11  
标签:请求 get python header request reponse url 使用 requests

安装和使用

        requests库支持python3.8+,注意版本

pip install requests

        在项目中引用时如下:

import requests

访问网站

        request访问网站一般用get和post两种方式

        get

        requests库提供了get方法,可以用get方式访问网站,相当于在浏览器输入网址直接访问

import requests

url = "https://httpbin.org/ip"

reponse = requests.get(url=url)

        get方法有时需要参数,get方式可以用params参数携带。

import requests

url = "https://httpbin.org/get"
data = {
    "key1":"value1",
    "key2":"value3",
    "key3":"value3",
}

reponse = requests.get(url=url,params=data)

        post

使用方式和get基本相同,只是传递参数时的属性名不同

import requests

url = "https://httpbin.org/post"

data = {
    "name":"测试"
}
# post请求获取数据并向页面传递数据
reponse = requests.post(url,data=data)

请求头

        请求头通过header参数设置,get和post都可以通过此参数设置请求头 。

import requests

header = {
    "user-agent" : "Mozilla/5.0 (Windows N Edg/129.0.0.0"
}
url = "https://httpbin.org/get"
reponse = requests.get(url,headers=header)

        header中的信息可以去浏览器控制台获取

        首先访问要爬取的网站,然后在控制台网络下找到网页文件,找到对应信息即可。一般都是网络中的第一个文件,文档类型为document。

        请求标头中的就是我们可以设置的。 

获取页面 

        在上面的代码中我们用reponse接收了请求的结果,reponse有很多属性。若直接print(reponse)则会显示状态码信息。

        reponse的属性如下:

  1. status_code: 整数,HTTP请求的返回状态码,如200表示成功,404表示未找到资源。

  2. url: 字符串,最终获取资源的URL。在重定向的情况下,这可能与原始请求的URL不同。

  3. headersCaseInsensitiveDict类型的字典,包含服务器响应的HTTP头部信息。这个字典对键不区分大小写。

  4. encoding: 字符串,从HTTP头部中猜测的响应内容编码方式。如果头部中没有指定charset,则默认为ISO-8859-1。

  5. apparent_encoding: 字符串,从内容中分析出的响应内容编码方式,通常比encoding更准确。

  6. text: 字符串,HTTP响应内容的文本形式。根据HTTP头部中的编码(默认为ISO-8859-1)或apparent_encoding来解码。

  7. content: 二进制数据,HTTP响应内容的原始二进制形式。在处理非文本响应(如图片、视频等)时非常有用。

  8. json(): 方法,不是属性,但非常重要。尝试将响应内容解析为JSON格式。如果内容不是有效的JSON,将抛出异常。

  9. linksRequestsLinkHeader对象(或类似),解析Link头部字段的值,提供了对分页链接等信息的便捷访问(尽管这取决于服务器是否提供了Link头部)。

  10. history: 列表,包含了一个或多个Response对象,表示请求过程中的重定向历史。如果请求没有被重定向,这个列表将是空的。

  11. cookiesRequestsCookieJar对象,包含从服务器发送回来的cookie信息。注意,这些cookie不会自动用于后续的请求,除非你使用了Session对象。

  12. elapseddatetime.timedelta对象,表示从发送请求到接收响应之间的时间差。

  13. request: 发送此响应的PreparedRequest对象。这个对象可以用来进一步分析或重新发送请求。

  14. status_line: 字符串,完整的HTTP状态行,如"200 OK"

  15. close(): 方法,不是属性,但值得一提。用于关闭与响应相关的文件描述符。通常,在大多数情况下,你不需要手动调用此方法,因为Requests库会在处理完响应后自动为你关闭它们。然而,在某些情况下,如果你想要立即释放系统资源,可以手动调用此方法。

可以通过reponse.属性名来访问:

         

         其中较为常用的有text,encoding,header,json(),cookie

cookie

        cookie是浏览器保存在本地的一些数据,记录一些用户信息。可以先在浏览器中登录然后控制台中拿到cookie。

import requests

# url = "https://baidu.com"
url = "https://httpbin.org/cookies"
# 请求头信息
header = {
    "user-agent":"Mozilla/5.0 (Win.36 Edg/129.0.0.0"
}
# 设置cookie
cookies = dict(cookies_args="hello world")
# 两种写法均可
# cookies = {  
#     'username': 'john_doe',  
#     'session_token': 'abcdef123456'  
# }  

reponse = requests.get(url,headers=header,cookies=cookies)

保存数据

        保存数据一般是保存request.content或request.text,写入到本地即可。一般的网页用w模式即可。

        这里的代码用到了bs4,于明天的推文中详解。

import requests
from bs4 import BeautifulSoup

url = "https://bj.zu.ke.com/zufang"

header = {
    "user-agent":"Mozilla/5.0 (Windows NT 9.0.0.0"
}

reponse = requests.get(url,headers=header)
soup = BeautifulSoup(reponse.text)
links = soup.select("a.twoline")
print(links)
links = [f"https://sy.zu.ke.com{i.attrs.get('href')}" for i in links]
for i in links:
    reponse = requests.get(i,headers=header)
    with open(f"./house/{i[29:50]}.html","w",encoding="utf-8") as f:
        f.write(reponse.text)

        如果网站对应的是图片或者视频等二进制文件,应使用reponse.content,同时打开模式应改为wb。

标签:请求,get,python,header,request,reponse,url,使用,requests
From: https://blog.csdn.net/mecende/article/details/142458588

相关文章

  • Stable Diffusion 使用详解(13)--- 3D纹理增强
    目录背景NormalMap描述原理使用心得例子描述原图参数设置底模​编辑正负相关性提示词其他参数controlnet效果还能做点啥调整效果背景实际上,在stablediffusion中,你获取发现很多controlnet其实功能有点类似,你都使用完一遍之后,会发现条条道路通罗马,有的......
  • 计算机专业选题推荐-基于python的协同过滤酒店推荐系统
    精彩专栏推荐订阅:在下方主页......
  • [CSharpTips]C# 使用NModbus库创建Modbus从站
    使用NModbus库创建Modbus从站Nuget安装NModbus库usingNModbus;usingSystem;usingSystem.Net;usingSystem.Net.Sockets;namespaceModbusSlaveTest{internalclassProgram{staticvoidMain(string[]args){//设置从站ID和......
  • 使用Redis的SETNX命令实现分布式锁
    什么是分布式锁分布式锁是一种用于在分布式系统中控制多个节点对共享资源进行访问的机制。在分布式系统中,由于多个节点可能同时访问和修改同一个资源,因此需要一种方法来确保在任意时刻只有一个节点能够对资源进行操作,以避免数据不一致或冲突。分布式锁就是用来实现这种互斥访问的......
  • css使用上中下三种图设置背景图,上下两张高度位置固定,中间拉伸(background-size、backg
    注意:此处计算需要使用calc,less的减法是在编译阶段不满足此处需求上下两张图高度为5px,位置紧贴上下边缘,中间背景图根据高度拉伸,并且增加模糊度background:url('./images/top.png')no-repeat,/*顶部图片*/url('./images/bottom.png')no-repeat,/*底部图片*/u......
  • `std::string_view`(c++17) 和 `std::stringstream` 使用区别·
    std::string_view和std::stringstream都是C++中处理字符串的工具,但它们的设计目标和使用场景非常不同。我们可以通过几方面进行对比。1.设计目的和核心功能std::string_view:设计用于只读访问字符串或字符序列。是一个轻量级的字符串视图,不会持有字符串的数据,仅仅是对......
  • Python中if语句使用详解!
    在Python语言中,if语句是一种条件语句,主要用于根据不同的条件执行不同的操作。接下来,小编通过这篇文章为大家详细讲解一下Python语言if语句,快来学习吧!1、基础语法在Python中,if语句的基本语法是:ifcondition:statement(s)如果条件condition为真,则执行if语句......
  • 如何使用反射内存卡
    使用反射内存卡一般需要以下步骤:硬件安装:1. 确认计算机有相应的插槽,如PCI插槽(以PCI5565反射内存卡为例),可打开机箱查看主板上是否预留。2. 设置反射内存卡上的S1和S2值。S1是8位开关,例如第一位控制反射内存是否打开冗余模式,第二位控制是否打开高性能开关,第三和第四位一起......
  • mybatis中的generator的使用
    MyBatisGenerator(MBG)是一个用于自动生成MyBatis相关代码的工具。它可以生成实体类、Mapper接口、XML映射文件等。下面是一个详细的步骤指南,包括配置文件的编写和生成代码的过程。步骤1:添加依赖首先,在你的项目中添加MyBatisGenerator的依赖。如果你使用的是Ma......
  • css使用@media响应式适配各种屏幕的方法示例
    定义和使用使用@media查询,你可以针对不同的媒体类型定义不同的样式。@media可以针对不同的屏幕尺寸设置不同的样式,特别是如果你需要设置设计响应式的页面,@media是非常有用的。当你重置浏览器大小的过程中,页面也会根据浏览器的宽度和高度重新渲染页面。PC端设备屏幕的宽度......