python request库的使用

news2024/11/16 17:47:13

安装和使用

        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。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2159938.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何检测并阻止机器人活动

恶意机器人流量逐年增加,占 2023 年所有互联网流量的近三分之一。恶意机器人会访问敏感数据、实施欺诈、窃取专有信息并降低网站性能。新技术使欺诈者能够更快地发动攻击并造成更大的破坏。机器人的无差别和大规模攻击对所有行业各种规模的企业都构成风险。 但您的…

【Go】探索Go语言中的Map

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

计算机前沿技术-人工智能算法-大语言模型-最新论文阅读-2024-09-23

计算机前沿技术-人工智能算法-大语言模型-最新论文阅读-2024-09-23 本期,我们对大语言模型在表情推荐, 软件安全和 自动化软件漏洞检测等方面如何应用,提供几篇最新的参考文章。 1 Semantics Preserving Emoji Recommendation with Large Language Mod…

高清8k电脑壁纸分享

Hello!欢迎各位新老朋友来看小弟博客,祝大家事业顺利,财源广进!! 主题:高清壁纸分享 文件太大上传不上去😅😅😅😅😅,需要的朋友自取&…

C语言 | Leetcode C语言题解之第433题最小基因变化

题目&#xff1a; 题解&#xff1a; int minMutation(char * start, char * end, char ** bank, int bankSize) {int m strlen(start);int **adj (int **)malloc(sizeof(int *) * bankSize);int endIndex -1;for (int i 0; i < bankSize; i) {adj[i] (int *)malloc(si…

手势手语识别数据集,YOLOv5目标检测两个数据集,图大量,模型精度高分别为近100类

手势手语识别数据集&#xff0c;YOLOv5目标检测 两个数据集&#xff0c;图大量&#xff0c;模型精度高分别为近100类 手势手语识别数据集&#xff08;Sign Language Gesture Recognition Dataset&#xff09; 数据集概述 该数据集专为手势手语识别设计&#xff0c;包含大量的…

Android平台Unity3D下如何同时播放多路RTMP|RTSP流?

技术背景 好多开发者&#xff0c;提到希望在Unity的Android头显终端&#xff0c;播放2路以上RTMP或RTSP流&#xff0c;在设备性能一般的情况下&#xff0c;对Unity下的RTMP|RTSP播放器提出了更高的要求。实际上&#xff0c;我们在前几年发布Unity下直播播放模块的时候&#xf…

某采招网爬虫数据采集逆向

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 前言 目标网站 aHR0cHM6Ly9zZWFyY2guYmlkY2VudGVyLmNvbS5jbi9zZWFyY2g/a2V5d29yZHM9JWU0…

并发编程工具集——CompletionService(三十五)

利用 CompletionService 实现 Dubbo 中的 Forking Cluster Dubbo 中有一种叫做 Forking 的集群模式&#xff0c;这种集群模式下&#xff0c;支持并行地调用多个查询服务&#xff0c;只要有一个成功返回结果&#xff0c;整个服务就可以返回了。例如你需要提供一个地址转坐标的服…

MySQL之基本查询(二)(update || delete || 聚合函数 || group by)

目录 一、表的更新update 二、表的删除delete 三、聚合函数 四、group by 分组查询 一、表的更新update 语法&#xff1a; UPDATE table_name SET column expr [, column expr ...] [WHERE ...] [ORDER BY ...] [LIMIT ...] 使用实列&#xff1a; ~ 将孙悟空同学的数学…

小程序开发设计-小程序的宿主环境:宿主环境简介⑥

上一篇文章导航&#xff1a; 小程序开发设计-小程序代码的构成&#xff1a;小程序页面的组成部分详解⑤-CSDN博客https://blog.csdn.net/qq_60872637/article/details/142306902?spm1001.2014.3001.5501 注&#xff1a;不同版本选项有所不同&#xff0c;并无大碍。 目录 上…

centos7安装docker DokcerCompose

一, 安装docker 1.更新yum源 yum下载很慢&#xff0c;一直出现正在尝试其它镜像&#xff0c;更改yum地址为阿里云镜像即可 1&#xff09;下载了阿里云提供的CentOS 7的Yum源配置文件&#xff0c;并将其覆盖到系统中的 /etc/yum.repos.d/CentOS-Base.repo 文件。 wget -O /et…

CVE-2024-44902 Thinkphp反序列化漏洞

Thinkphp v6.1.3至v8.0.4版本中存在反序列化漏洞&#xff0c;攻击者可利用此漏洞执行任意代码。 影响版本 v6.1.3 < thinkphp < v8.0.4 环境搭建 环境&#xff1a;php8.0.2thinkphp8.0.4memcached3.2.0 首先搭建 thinkphp 环境&#xff1a;thinkPHP 8.0.4 安装_thin…

SQL进阶技巧:如何利用if语句简化where或join中的条件 | if条件语句的优雅使用方法

目录 0 问题场景 1 数据准备 2 问题分析 2.1 需求一 2.2需求二 3 小结 想要进一步了解SQL这门艺术语言的&#xff0c;可以订阅我的专栏数字化建设通关指南&#xff0c;将在该专栏进行详细解析。 专栏 原价99&#xff0c;现在活动价39.9&#xff0c;按照阶梯式增长&…

EasyExcel将数据库里面的数据生成excel文件

EasyExcel官方文档 1.在model模块导入依赖 <!-- 生成报表--> <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>4.0.3</version> </dependency> 2.修饰实体类 package…

Metasploit Pro 4.22.4-2024091601 发布下载,新增功能概览

Metasploit Pro 4.22.4-2024091601 (Linux, Windows) - 专业渗透测试框架 Rapid7 Penetration testing, release Sep 16, 2024 请访问原文链接&#xff1a;https://sysin.org/blog/metasploit-pro-4/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页…

保障电气安全的电气火灾监控系统主要组成有哪些?

电气火灾是什么&#xff1f; 电气火灾一般是指由于电气线路、用电设备、器具以及供配电设备出现故障性释放的热能&#xff1a;如高温、电弧、电火花以及非故障性释放的能量&#xff1b;如电热器具的炽热表面&#xff0c;在具备燃烧条件下引燃本体或其他可燃物而造成的火灾&…

速通汇编(七)BX、SI、DI寄存器,BP寄存器,直接寻址和间接寻址

下文中出现的"idata"&#xff0c;指的都是任意常量 一&#xff0c;基于BX、SI、DI等寄存器的寻址形式 在第五篇中曾介绍过DS寄存器的作用&#xff0c;简要复习一下->速通汇编&#xff08;五&#xff09;认识段地址与偏移地址&#xff0c;CS、IP寄存器和jmp指令&a…

oracle avg、count、max、min、sum、having、any、all、nvl的用法

组函数 having的使用 any的使用 all的使用 nvl 从执行结果来看&#xff0c;nvl(列名&#xff0c;默认值)&#xff0c;nvl的作用就是如果列名所在的这一行出现空则用默认值替换

3.2 USART 通用同步/异步收发器

文章目录 什么是USARTUSART框图 stm32的Usart串口收发配置初始化发送接收 重定向的几种方法串口发送数据包 什么是USART USART&#xff08;Universal Synchronous/Asynchronous Receiver/Transmitter&#xff09;通用同步/异步收发器USART是STM32内部集成的硬件外设&#xff0…