〖Python网络爬虫实战⑧〗- requests的使用(二)

  • 订阅:新手可以订阅我的其他专栏。免费阶段订阅量1000+

                python项目实战

                Python编程基础教程系列(零基础小白搬砖逆袭)

  • 说明:本专栏持续更新中,目前专栏免费订阅,在转为付费专栏前订阅本专栏的,可以免费订阅付费专栏,可报销(名额有限,先到先得)
  • 作者:爱吃饼干的小白鼠。Python领域优质创作者,2022年度博客新星top100入围,荣获多家平台专家称号。

 最近更新

〖Python网络爬虫实战⑥〗- 多线程和多进程

〖Python网络爬虫实战⑦〗- requests的使用(一)

⭐️requests的使用(二)

        上一篇我们说了requests的简单用法,知道了如何发送请求,今天我们更深层次的来学习requests。我们看看高级一点的操作,比如讲文件上传,cookies设置,代理设置之类的。

🌟1.文件上传

        我们知道requests可以模拟提交一些数据,除此之外。有的网站需要我们上传文件,我们用requests同样也可以实现。比如讲,我们现在想上传文件,我们可以这样做。

import requests

f = {'f':open('a.text','rb')}

r = requests.post('http://httpbin.org/post',files = f)

print(r.text)

        我们运行一下程序,我们看有什么效果。

        我们可以看到响应里面包含了files的这个字段,而form这个字段是空的,这证明了文件上传部分会单独有一个files字段来标识。

🌟2.cookies

        我们可以用cookies来维持登录状态,在浏览器里面,在开发者工具里面,我们可以找到cookies字段,我们可以直接复制即可。

         我们将cookies设置到headers里面,然后,发送请求,就可以登录了。示例代码如下:

import requests

headers = {
    'Cookie': 'BIDUPSID=5A5A25DCD448BB79A207EED72F283FC9; PSTM=1673148180; BAIDUID=39FBDAC549C05F71A3F3F5A60CFA4D21:SL=0:NR=10:FG=1; newlogin=1; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; H_PS_PSSID=36549_38054_37910_38148_37990_38178_38170_37802_37923_38088_26350_38118_38096_38008_37881; BAIDUID_BFESS=39FBDAC549C05F71A3F3F5A60CFA4D21:SL=0:NR=10:FG=1; ab_sr=1.0.1_ZmZlMjZjM2MwNjRlZTEyMDg0YmIxNDc3ZDY4OWY5NDRiNzkwZjE0Yjk2YWJjMWQxOGJkZTUyMGM3MzBkMmUxYjYxYTM1NzZkYWY3ZWNkOWNjYzY5MzU4NDkyMWY5ODZjZGQ4OWFmM2I2YTY0MTA3OGY3Y2NhOWNjMGVmYmU1YmM4ZDM1YzBlZTJmZjZjZTI5Yzk2ZWVlZDhkZjYxNTNjYQ==',
}

res = requests.get('https://www.baidu.com/',headers=headers)
print(res.text)

🌟3.SSL证书验证

那么什么是SSL证书呢?

  • SSL证书是一种数字证书,是一种电子副本,类似于驾驶证、护照和营业执照的电子副本。它由受信任的数字证书颁发机构(CA)签发,并且客户端和服务器都必须验证证书的有效性。
  • SSL证书的主要功能是提供服务器身份验证和数据传输加密。它可以确保数据在传输过程中不被窃取或篡改,并且可以增强安全性,防止未经授权的人员访问服务器。
  • 在SSL证书验证过程中,客户端和服务器都需要验证证书的有效性。

        此外,requests还有证书验证的功能,当发送HTTP请求的时候,它会检查SSL证书,我们可以使用verify参数控制是否检查此证书。一般默认是打开的。

        那我们的代码怎么写呢?

response = requests.get('http://www.baidu.com',verify = False)

 🌟4.代理设置

        对于一些网站,在测试的时候还能获取内容,一旦频繁爬取,就有可能被封IP,导致一段时间无法访问。那么,为了防止这种情况发生,我们就要设置代理来解决,这里就用到了proxies参数。

        Proxy 是 Python 的一个内置模块,它可以用来创建代理对象,用于在网络上转发请求和响应。在 Python 中,可以使用 requests 库来发送 HTTP 请求,并使用 proxies 参数来指定代理对象。

        下面是一个示例代码,演示如何使用 proxies 参数来设置代理对象:

import requests  

# 创建一个 requests 对象  
r = requests.get('http://example.com')

# 设置代理对象  
r.proxies = {'http': 'http://proxy.example.com:80'}

# 发送请求并获取响应  
response = r.send()

# 打印响应状态码和头部信息  
print(response.status_code)
print(response.headers)  
  

在上面的代码中,我们首先创建了一个 requests 对象,并使用 proxies 参数设置了一个代理对象。在这个例子中,我们将 http 请求转发到了一个名为 proxy.example.com 的代理服务器上,并将代理服务器的地址设置为 80

然后,我们使用 send 方法发送了一个 HTTP GET 请求,并将代理对象作为参数传递给了它。最后,我们使用 response.status_code 和 response.headers 属性打印了响应状态码和头部信息。

🌟5.超时设置

        在网路不好的时候,或者服务器响应太慢,甚至有时候还会报错,为了防止服务器不能及时响应,我们可以设置一个超时设置,这里就用到了timeout参数。

response = requests.get('http://www.baidu.com',timeout= 30)

  request 对象的 timeout 属性用于设置请求超时时间。默认情况下,timeout 属性的值为 60,表示请求超时时间为 60 秒。如果需要更改超时时间,可以将其设置为一个更小的值,例如 30,表示请求超时时间为 30 秒。

        如果需要在请求发送后立即返回一个响应,可以将 timeout 属性设置为 0。这将使 timeout 属性的值为 None,表示请求超时时间为 永远。

🌟总结

        今天我们更深层次的来学习requests。我们看看高级一点的操作,比如讲文件上传,cookies设置,代理设置之类的。下一篇,我们就来说说正则表达式的相关知识点。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

项目管理案例分析有哪些?

项目管控中遇到的问题有哪些?这些问题是如何解决的? 在项目管理领域,案例分析是一种常见的方法来学习和理解项目管理实践,下面就来介绍几个成功案例,希望能给大家带来一些参考。 1、第六空间:快速响应个性…

【Linux】七、进程间通信(二)

目录 三、system V(IPC) 3.1 system V共享内存 3.1.1 共享内存的概念 3.1.2 共享内存的原理 3.1.3 创建共享内存(shmget ) 3.1.4 ftok函数 3.1.5 查看共享内存资源 3.1.6 创建共享内存测试代码 3.1.7 再次理解共享内存 3.1.8 释放共享内存(shm…

Redis7搭建主从+哨兵通俗易懂

背景前提–用到的命令 ps -ef |grep redis redis服务器启动(精确启动配置文件位置) redis-server redis6379.conf redis-server redis6380.conf redis-server redis6381.conf redis客户端登录 redis-cli -a 123456 -p 6379 redis-cli -a 123456 -p 6380 redis-cli -a 12345…

蓝桥杯刷题冲刺 | 倒计时1天

作者:指针不指南吗 专栏:蓝桥杯倒计时冲刺 🐾蓝桥杯加油,大家一定可以🐾 文章目录我是菜菜,最近容易我犯的错误总结 一些tips 各位蓝桥杯加油加油 当输入输出数据不超过 1e6 时,scanf printf 和…

【Vue】初识Vue(一)

🚗Vue学习扬帆起航~ 🚩本文已收录至专栏:Vue框架 👍由于Vue2与Vue3存在许多相似之处,先开始Vue2学习再进阶到Vue3 我们知道技术的兴起与流行一般都是为了帮助我们解决一类问题使得我们开发体验更加舒适,那么…

C++之多态

文章目录前言一、多态的概念二、多态的定义及实现1.多态的构成条件2.虚函数3.虚函数的重写(覆盖)4.虚函数重写的两个例外4.C11中的override和final关键字三、重载、重定义(隐藏)、重写(覆盖)的区分四、抽象…

【美赛】2023年ICM问题Z:奥运会的未来(思路、代码)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

【面试】MySQL面试题

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?MySql, Oracle,Sql Service的区别数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据库经常使用的函数数据类…

C++设置动态库的版本号(软链接)

1,动态库版本命名规则 假设有一个动态库:libfooSdk.so.1.1.0,其对应的三个名称如下。 realname:libfooSdk.so.1.1.0 soname:libfooSdk.so.1 linkname:libfooSdk.solinux的动态库的命名格式是libfooSdk.so.x.y.z 版本…

大数据概述及其软件生态

一、大数据的诞生 (1)当全球互联网逐步建成(2000年左右),各大企业或政府单位拥有了海量的数据亟待处理。 (2) 基于这个前提逐步诞生了以分布式的形式(即多台服务器集群)…

PCB生产工艺流程三:生产PCB的内层线路有哪7步

PCB生产工艺流程三:生产PCB的内层线路有哪7步 在我们的PCB生产工艺流程的第一步就是内层线路,那么它的流程又有哪些步骤呢?接下来我们就以内层线路的流程为主题,进行详细的分析。 由半固化片和铜箔压合而成,用于…

Vue|计算属性

1. 计算属性1.1 差值语法1.2 methods1.3 计算属性1. 计算属性 1.1 差值语法 开始前分别在项目目录创建文件夹及页面如下 需求1:在两个文本框中分别输入姓和名的同时需要在下方将数据进行拼接组装,效果如下图 如果用传统的方式来实现的话,需要…

投屏软件:ApowerMirror Crack

一个软件,两个系统 ApowerMirror是一个跨平台的屏幕镜像应用程序,可用于iOS和Android设备,与Windows和Mac兼容。对于运行支持 Chromecast 的 Android 5.0 或更高版本的手机,用户可以使用此程序镜像屏幕。而对于支持AirPlay的iOS设…

bfs与dfs详解(经典例题 + 模板c-代码)

文章首发于:My Blog 欢迎大佬们前来逛逛 文章目录模板解析dfsbfs1562. 微博转发3502. 不同路径数165. 小猫爬山模板解析 DFS(深度优先搜索)和BFS(广度优先搜索)是图论中两个重要的算法。 dfs 其中DFS是一种用于遍历…

spring源码之扫描前设置

扫描前设置 &#x1f6f9;源码源码说明总结启动一个springboot项目源码 org.springframework.context.annotation.ComponentScanAnnotationParser#parse public Set<BeanDefinitionHolder> parse(AnnotationAttributes componentScan, String declaringClass) {// 创建C…

清明-微信小程序

# 云开发接入 初始化云开发 环境保密

深度学习部署(十三): CUDA RunTime API thread_layout线程布局

1. 知识点 在.vscode/settings.json中配置"*.cu": "cuda-cpp"可以实现对cuda的语法解析 layout是设置核函数执行的线程数&#xff0c;要明白最大值、block最大线程数、warpsize取值 maxGridSize对应gridDim的取值最大值maxThreadsDim对应blockDim的取值最…

酷炫的青蛇探针serverMmon

本文软件由网友 114514 推荐&#xff1b; 什么是 serverMmon &#xff1f; serverMmon (青蛇探针)是 nodeJs 开发的一个酷炫高逼格的云探针、云监控、服务器云监控、多服务器探针。 主要功能介绍&#xff1a; 全球服务器分布世界地图服务器&#xff08;控制端&#xff09; ping…

简单3招教你设置电脑时间

案例&#xff1a;电脑时间怎么设置&#xff1f; 【我使用电脑时&#xff0c;电脑显示的时间一直不对&#xff0c;这导致我非常不方便&#xff0c;想问下大家平常使用电脑时有什么设置电脑时间比较简单的方法吗&#xff1f;】 电脑的时间设置很重要&#xff0c;不仅可以保证电…

Java单例模式、阻塞队列、定时器、线程池

目录1. 单例模式1.1 饿汉模式实现单例1.2 懒汉模式实现单例1.2.1 加锁实现懒汉模式线程安全1.2.2 volatile实现懒汉模式线程安全1.3 饿汉模式和懒汉模式小结&#xff08;面试题&#xff09;2. 阻塞队列2.1 单线程下阻塞队列2.2 多线程下阻塞队列——生产者消费者模型2.3 模拟写…