python测试url是否可访问,网站是否连通的方法

2023-11-06

前言

一般这种方法用在校验
比如

  • 前端界面传回后端的url,如果返回值不是200,不保存其值
  • 调用的接口不通,直接返回非200
  • 爬虫网站,验证url是否可爬取等信息

1. requests库

讲解实战方法之前,先科普下基本的知识点

该代码为requests而不是request(注意区分)
导入的时候通过import requests

通过requests库获取url
获取得到的值赋值给response对象:res = requests.get(url)

requests的Http请求类型(get、post、put、delete等)都可返回一个response对象

url = https://blog.csdn.net/weixin_47872288
res = requests.get(url)
res = requests.post(url)
res = requests.put(url)
res = requests.delete(url)
res = requests.head(url)
res = requests.options(url)

1.1 传参

经常看到一些网站都是key=value或者/value传参
(在java中类似restful等格式: RESTFul从入门到精通超全解析(全)

如果传入key value通过requests的HTTP请求类型获取,传入字典、列表、元祖类型等
具体格式如下:

# 字典传输
# https://blog.csdn.net/weixin_47872288?key=value
param = {'key': 'value'}
res = requests.get("https://blog.csdn.net/weixin_47872288", param=param)

# 单个key 多个value(传入列表)
# https://blog.csdn.net/weixin_47872288?key1=value1&key2=value2&key2=value3&key2=value4
param = {'key1': 'value1''key2': ['value2', 'value3', 'value4']}}
res = requests.get("https://blog.csdn.net/weixin_47872288", param=param)

1.2 响应内容

关于响应内容具体都有这些方法,通过这些方法取出想要的数据信息:

方法 描述
res.raise_for_status() 404的时候会抛出异常(响应404)
res.status_code 返回值
res.apparent_encoding 编译方式
res.ok 是否成功访问

大致示例代码如下:

res = requests.get(url)
try :
    logger.info(res.raise_for_status())
except requests.exceptions.HTTPError as err:
    logger.info(err)

logger.info(res.status_code)
logger.info(res.apparent_encoding)
logger.info(res.ok)

如果url或者接口不可访问的时候,输出值为:

404 Client Error: Not Found
404
ascii
False

讲解一下这个函数:res.raise_for_status(),主要与异常绑定在一起,如果response返回值非200,返回一个HTTPError,返回值200则内容正确(判定网络是否可正常连接)

2. python web

结合python web实战开发
通过前端form表单传进的数据(获取其url值)

def save_data(self, request, form):
	# 通过获取url接口
    port = form.cleaned_data['port']
	# 由于没有http,通过拼接
	url = "http://" + port
	
	# 定义响应头文文件
	headers = {"Content-Type": "application/json"}
	# 通过requests库
	res = requests.get(url=url, headers=headers)
	
	# 如果返回值非200 则跳出该函数返回false
	if res.status_code != 200:
   		return False
   	
   	# 接口测试成功,则继续执行以下代码
   

如果url返回不是200,则form表单无法进行保存

如果接口带有参数,可通过模拟接口进行测试:

url = "http://" + url_value

pt = requests.post(url)
gt = requests.get(url)

try:
    if (pt.status_code == 200 or gt.status_code == 200) or (
            pt.status_code == 400 and json.dumps(pt.text) != None) or (
            gt.status_code == 400 and json.dumps(gt.text) != None):
	
	// 执行
     elif pt.status_code == 404 and gt.status_code == 404:
        return False

except Exception:
    logger.info("false url")

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python测试url是否可访问,网站是否连通的方法 的相关文章

随机推荐

  • SQLITE学习之SQLITE基础知识(一)

    1 SQLITE常见命令 sqlite常用命令被称为 SQLite 的点命令 这些命令的不同之处在于它们不以分号 结束 我们只需在ubuntu终端界面上的命令提示符 下键入一个简单的 sqlite3 命令 在 SQLite 命令提示符 gt
  • python解数独

    在学典型优化问题模型与算法的时候发现 暑假的解数独的部分 可以设计三个模型 比如唯一余数 基础摒除法等 让他们循环运行 同时设计一个步数 多次循环来找到步数最少的解题路径 当然还会遇到这三个模型解决不了的问题 这时候就需要增加模型了 sud
  • docker save和docker export区别

    两者区别 docker save用于导出镜像到文件 包含镜像元数据和历史信息 docker export用于将当前容器状态导出至文件 类似快照 所以不包含元数据及历史信息 体积更小 此外从容器快照导入时也可以重新指定标签和元数据信息 一 导
  • LINUX 系统编程之文件IO

    文件IO 属于系统IO 是系统内核向用户空间提供的接口 直接调用内核提供的系统调用函数 头文件是unistd h 1 open char s flag mode 在fcntl h头文件种声明 函数的作用 创建或打开某个文件 最多包含三个参数
  • java bean对象属性复制,将一个对象的属性值赋值给另一个对象,对象之间的复制方法

    注意依赖 springframework下的复制顺序为 目标对象 新对象 import org springframework beans BeanUtils public static void main String args Inte
  • java 获取 sessionid_通过sessionid获取session方法

    使用HttpSessionListener来监听session的创建和销毁 首先创建HttpSessionListener的实现类 SessionListeners java packagecom test importjava util
  • 【详细学习Docker部署搭建高可用的MySQL集群环境】

    一 MySQL高可用集群搭建 MySQL集群搭建在实际项目中是非常必须的 接下来我们来学习通过PXC Percona XtraDB Cluster 来实现强一致性数据库集群搭建 1 1 MySQL集群搭建 1 1 1 中央仓库查找相关镜像
  • 三年级计算机考试题目及答案,三年级信息技术试题及答案.doc

    三年级信息技术试题及答案 三年级信息技术期末试题 学校 班级 姓名 分数 一 单项选择题 共10题 每小题4 共计40分 1 计算机的心脏是 显示屏 鼠标 2 输入汉字时我们需要选择输入法 是我们使用的输入法之一 它的名字叫 五笔输入法 智
  • 【刷题笔记7】LeetCode 54. 螺旋矩阵(数组模拟)

    用分享的方式成长 用有趣的眼光看世界 欢迎来到12 26 25的博客 热爱编码 算法 知识总结 不定期更新有趣 有料 有营养内容 让我们共同学习 共同进步 系列索引 刷题笔记0 系列目录索引 持续更新 推荐收藏 本题题目 LeetCode
  • NVIDIA FasterTransformer

    NVIDIA FasterTransformer NVIDIA GPU计算专家团队针对transformer推理提出了性能优化方案 FasterTransformer 截止到2022年7月 这套方案支持的模型涵盖了BERT GPT Long
  • Mybatis整合Spring -- typeAliasesPackage

    Mybatis 整合 Spring integration MapperScannerConfigurer Mybatis整合Spring 根据官方的说法 在ibatis3 也就是Mybatis3问世之前 Spring3的开发工作就已经完成
  • python时间计算 周开始第一天和结束天 通过年周计算

    python def year mon for check year week 通过年周获取当前月 按每周最后一天的月份比对 最后一天为周日 end year week str year str week 0 end week result
  • xss入门闯关详解6-10关

    继续进行6 10关 第6关 简单的尝试之后发现闭合掉了 尝试空格或者大小写 tab绕过 大小写成功绕过 Onclick alert 1 第七关 老样子 value gt click alert 1 gt value gt lt gt ale
  • 取消idm下载器和google浏览器的关联(让谷歌浏览器禁止使用idm插件)

    https jingyan baidu com article 597035529ae46b8fc107405d html IDM下载安装成功之后 会自动默认关联你电脑上的所有浏览器 在使用浏览器下载的时候自动会变成IDM下载 如果不想让I
  • 2018-2019-2 网络对抗技术 20165335 Exp2 后门原理与实践

    一 基础问题回答 1 例举你能想到的一个后门进入到你系统中的可能方式 钓鱼网站 搞一个假网站 假淘宝 盗版电影 文库下载文档什么的 下载东西的时候把带隐藏的后门程序附带下载进去 自启动 反弹连接 搞一个小网站 用iframe标签跳转到危险网
  • 自动化测试工具Parasoft c++ test v2021.1全新发布,简化嵌入式测试

    随着Parasoft C C test 2021 1的发布 嵌入式测试和开发团队获得了现代高度自动化CI CD管道的速度和效率 最新版本为团队提供了完全集成的静态和单元测试 以实现持续合规性和质量的交付 新版本继续全面支持最新的合规标准 包
  • 几种查找的时间复杂度

    1 顺序查找 1 最好情况 要查找的第一个就是 时间复杂度为 O 1 2 最坏情况 最后一个是要查找的元素 时间复杂度未 O n 3 平均情况下就是 n 1 2 所以总的来说时间复杂度为 O n 2 二分查找 O log2n gt log以
  • 在Ubuntu上编译安装LLVM

    章节索引 Motivation 环境 Git 下载LLVM源码 CMake 编译 安装 文件链接 验证 后记 Motivation 两周前实验室要求我配置一个叫Speedy js的编译器 配置这个编译器需要先配置好LLVM 根据这个编译器作
  • Unity 流程控制

    异步函数 Invoke 被调用的方法不是立刻执行 而是过一段时间后才执行 注 Invoke是不能接受有参数的方法的 Invoke是受Time timeScale的影响 所以当Time timeScale 0 的时候 Invoke是无效的 因
  • python测试url是否可访问,网站是否连通的方法

    目录 前言 1 requests库 1 1 传参 1 2 响应内容 2 python web 前言 一般这种方法用在校验 比如 前端界面传回后端的url 如果返回值不是200 不保存其值 调用的接口不通 直接返回非200 爬虫网站 验证ur