python获取网页内容 靠谱的做法

获取网页内容 response = requests.get(url, verify=False) 通过这种方式下载网址不太靠谱, 容易出 ssl错误 requests.exceptions.SSLError: HTTPSConnectionPool(host='agri.hainan.gov.cn', port=443): Max retries exceeded with url: /hnsnyt/xxgk/gfxwj/index_1.html (Caused by SSLError(SSLEOFError(8, '[SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:1006)'))) , 下面是给出靠谱的做法

如果你希望使用更加安全和可靠的方式下载网页内容,并且希望避免 requests 中的 SSL 问题,有几个替代方案和改进方法,可以更好地处理 SSL 验证、证书问题等。以下是几种更安全的方法:

方法 1: 使用 httpx

httpxrequests 的一个替代库,支持异步请求,也有更好的 SSL 验证功能。httpx 默认会进行 SSL 证书验证,但可以在需要时进行配置。

安装 httpx

pip install httpx

使用示例:

import httpxurl = 'https://agri.hainan.gov.cn/hnsnyt/xxgk/gfxwj/index_1.html'# 创建一个客户端对象
with httpx.Client() as client:response = client.get(url)print(response.text)

如果你遇到 SSL 错误,可以通过调整 verify 参数来禁用 SSL 验证,尽管这仍然不推荐用于生产环境:

response = client.get(url, verify=False)

方法 2: 使用 urllib3

urllib3 是 Python 的一个高级 HTTP 客户端,处理 SSL 的方式比 requests 更加底层,适合需要精细控制 SSL 配置的场景。你可以通过 urllib3 来下载网页并管理 SSL 设置。

安装 urllib3

pip install urllib3

使用示例:

import urllib3# 创建一个 PoolManager,支持更细粒度的控制
http = urllib3.PoolManager()url = 'https://agri.hainan.gov.cn/hnsnyt/xxgk/gfxwj/index_1.html'# 禁用 SSL 验证(如果不关心安全)
response = http.request('GET', url, retries=3, timeout=5.0)
print(response.data.decode('utf-8'))

如果你希望进行更精细的 SSL 配置,可以直接使用 SSLContext 来设置证书验证。

方法 3: 使用 aiohttp (异步请求)

如果你需要进行多个异步 HTTP 请求,aiohttp 是一个非常强大的异步 HTTP 客户端库,支持协程,可以让你以更高效的方式进行网络请求。它也有更好的 SSL 处理机制。

安装 aiohttp

pip install aiohttp

使用示例:

import aiohttp
import asyncioasync def fetch(url):async with aiohttp.ClientSession() as session:async with session.get(url) as response:return await response.text()url = 'https://agri.hainan.gov.cn/hnsnyt/xxgk/gfxwj/index_1.html'# 异步运行
html = asyncio.run(fetch(url))
print(html)

如果遇到 SSL 问题,可以通过 verify_ssl 参数来禁用 SSL 验证:

async with session.get(url, ssl=False) as response:

方法 4: 使用 pycurl 库(更底层,支持更多配置)

pycurl 是 Python 对 libcurl 的封装,提供了更多的配置选项,特别适合对 SSL 证书和协议进行精细控制。

安装 pycurl

pip install pycurl

使用示例:

import pycurl
from io import BytesIOurl = 'https://agri.hainan.gov.cn/hnsnyt/xxgk/gfxwj/index_1.html'# 创建一个缓冲区来接收响应
buffer = BytesIO()# 创建 cURL 对象
c = pycurl.Curl()
c.setopt(c.URL, url)
c.setopt(c.WRITEDATA, buffer)# 禁用 SSL 验证
c.setopt(c.SSL_VERIFYPEER, 0)  # 不验证对方的证书
c.setopt(c.SSL_VERIFYHOST, 0)  # 不验证主机# 执行请求
c.perform()# 获取结果
response = buffer.getvalue().decode('utf-8')
print(response)

方法 5: 使用 certifi 自定义证书路径

如果 SSL 错误是由于缺少根证书,你可以通过 certifi 来确保使用最新的证书链。 certifi 提供了 Mozilla 的证书集合,可以帮助你避免 SSL 错误。

安装 certifi

pip install certifi

然后你可以在请求中显式地指定证书路径,确保使用最新的根证书。

import requests
import certifiurl = 'https://agri.hainan.gov.cn/hnsnyt/xxgk/gfxwj/index_1.html'
response = requests.get(url, verify=certifi.where())  # 使用 certifi 的证书路径
print(response.text)

总结:

  • httpx: 推荐用 httpx 库来替代 requests,它有更强的 SSL 处理和更高的灵活性。
  • urllib3: 提供更多底层控制,适合精细的 SSL 配置。
  • aiohttp: 异步请求,适合进行并发下载操作。
  • pycurl: 如果你需要完全控制 HTTP 请求和 SSL 配置,pycurl 是非常强大的选择。
  • certifi: 确保 SSL 证书验证使用最新的证书集。

这些方案都能够在保证安全性的前提下处理 SSL 问题。如果你遇到的主要问题是 SSL 证书问题,确保使用较新的证书链,并避免在生产环境中禁用 SSL 验证。

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

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

相关文章

MFC中CString的Format、与XML中的XML_SETTEXT格式化注意

1、在MFC中导入 "msxml6.dll",并使用其中的XML_SETTEXT函数,此调用在进行格式化的时候,调用的还是CString.Format()函数! 2、用double类型的数据,格式化整形数%d之前,必须将double强转为int&…

Linux-C-函数栈-SP寄存器

sp(Stack Pointer,栈指针)是计算机体系结构中一个非常重要的寄存器,下面将详细介绍其作用和原理。 作用 1. 管理栈内存 栈是一种后进先出(LIFO,Last In First Out)的数据结构,在程…

从零开始用react + tailwindcs + express + mongodb实现一个聊天程序(一)

项目包含5个模块 1.首页 (聊天主页) 2.注册 3.登录 4.个人资料 5.设置主题 一、配置开发环境 建立项目文件夹 mkdir chat-project cd chat-project mkdir server && mkdir webcd server npm init cd web npm create vitelatest 创建前端项目时我们选择javascrip…

深入理解 QObject的作用

QObject 作为 Qt 库中所有对象的基类,其地位无可替代。几乎 Qt 框架内的每一个类,无论是负责构建用户界面的 QWidget,还是专注于数据处理与呈现的 QAbstractItemModel,均直接或间接继承自 QObject。这种继承体系赋予 Qt 类库高度的…

22爬虫:使用Drission Page的两个案例

案例一:使用DrissionPage抓取BOSS上的招聘信息 使用requests获取BOSS网站上的内容是非常困难的,但是通过网页自动化工具DrissionPage或者是Playwright或者是Seleenium是非常容易的,接下来我们就给出使用DrissionPage爬取BOSS网站python招聘的…

Ubuntu 下 nginx-1.24.0 源码分析 - ngx_atoi 函数

ngx_atoi 声明在 src/core/ngx_string.h ngx_int_t ngx_atoi(u_char *line, size_t n); 定义在 src/core/ngx_string.c ngx_int_t ngx_atoi(u_char *line, size_t n) {ngx_int_t value, cutoff, cutlim;if (n 0) {return NGX_ERROR;}cutoff NGX_MAX_INT_T_VALUE / 10;cutlim…

具有整合各亚专科医学领域知识能力的AI智能体开发纲要(2025版)

整合各亚专科医学领域知识能力的AI代理的开发与研究 一、引言 1.1 研究背景 在科技飞速发展的当下,人工智能(AI)已成为推动各行业变革的关键力量,医疗领域也不例外。近年来,AI 在医疗行业的应用取得了显著进展,从医学影像诊断到疾病预测,从药物研发到个性化医疗,AI 技…

如何设计app测试用例

功能测试 测试方法:等价类划分法、边界值法、场景法、因果图法。优先级设定:核心业务功能设为高优先级。需求覆盖 正向场景、反向场景、关联接口串场景 与后端开发确认测试用例是否全面覆盖后端逻辑。和产品确认用例是否覆盖本次需求,以及是否…

YOLO11 【四】 【DNF制作自己的数据集,切割视频以及labelimg 闪退问题】

一、问题labelimg 闪退 一点w打标 labelimg就闪退 **原因 : python 版本太高 ** 解决办法:单独创建一个虚拟环境用于打标 conda create -n labelimg python3.9 二、使用python脚本切割视频 # -*- coding: utf-8 -*- import cv2 import osdef video_…

[MDM 2024]Spatial-Temporal Large Language Model for Traffic Prediction

论文网址:[2401.10134] Spatial-Temporal Large Language Model for Traffic Prediction 论文代码:GitHub - ChenxiLiu-HNU/ST-LLM: Official implementation of the paper "Spatial-Temporal Large Language Model for Traffic Prediction" …

k2路由器登录校园网

教程1刷入Breed,并手动刷入Padavan固件:斐讯K1、K2、K2P 刷机、刷入Breed 辅助工具 | tb (tbvv.net) Padavan下载网址: 我用的是: Padavan 登录的网址是 192.168.123.1 Padavan配置教程: 先用网线连上校园网&#…

多源 BFS 算法详解:从原理到实现,高效解决多源最短路问题

多源 BFS 是一种解决 边权为 1 的多源最短路问题 的高效算法。其核心思想是将所有源点视为一个“超级源点”,通过一次 BFS 遍历即可计算所有节点到最近源点的最短距离。以下从原理、实现和代码示例三个方面深入讲解: 目录 一、原理分析 1. 单源 BFS vs…

【蓝桥杯集训·每日一题2025】 AcWing 6123. 哞叫时间 python

6123. 哞叫时间 Week 1 2月18日 农夫约翰正在试图向埃尔茜描述他最喜欢的 USACO 竞赛,但她很难理解为什么他这么喜欢它。 他说「竞赛中我最喜欢的部分是贝茜说 『现在是哞哞时间』并在整个竞赛中一直哞哞叫」。 埃尔茜仍然不理解,所以农夫约翰将竞赛以…

C++,设计模式,【工厂方法模式】

文章目录 如何用汽车生产线理解工厂方法模式?一、传统生产方式的困境二、工厂方法模式解决方案三、模式应用场景四、模式优势分析五、现实应用启示✅C++,设计模式,【目录篇】 如何用汽车生产线理解工厂方法模式? 某个早晨,某车企CEO看着会议室里堆积如面的新车订单皱起眉…

贪心算法

int a[1000], b5, c8; swap(b, c); // 交换操作 memset(a, 0, sizeof(a)); // 初始化为0或-1 引导问题 为一个小老鼠准备了M磅的猫粮,准备去和看守仓库的猫做交易,因为仓库里有小老鼠喜欢吃的五香豆,第i个房间有J[i] 磅的五香豆&#xf…

机器学习·数据处理

前言 对于大规模数据,我们经常会使用python内置函数或者编写脚本进行批量化处理,从而提高后续使用算法的效率。 1. 正则表达式 定义:用于检索、替换符合某个模式的文本,是文本预处理常用技术。基本语法 符号描述.匹配除换行符 …

大厂出品!三个新的 DeepSeek 平替网站

前几天给大家分享了几个 DeepSeek 免费平替网站,今天又来更新啦。 新增了以下三个平台:火山引擎、知乎直达、百度搜索。 经过实际测试,这几个平台的服务响应速度快,稳定性表现优异,基本不会出现宕机或服务器繁忙的情…

[创业之路-321]:创新开拓思维和经营管理思维的比较

目录 一、概述 1.1、定义与内涵 1、创新开拓思维: 2、经营管理思维: 1.2、特点与优势 1、创新开拓思维的特点与优势: 2、经营管理思维的特点与优势: 3、应用场景与限制 4、总结 二、创新开拓思维与经营管理思维&#xf…

《深度学习实战》第1集:深度学习基础回顾与框架选择

本专栏系列博文旨在帮助读者从深度学习的基础知识逐步进阶到前沿技术,涵盖理论、实战和行业应用。每集聚焦一个核心知识点,并结合实际项目进行实践,避免空谈理论,简洁明快,快速切入代码,所有代码都经过验证…

经典复古嘻哈说唱朋克风格专辑海报标题设计psai英文字体安装包 Punk Of Sad — Ransom Font

Punk Of Sad 将确保您忘记所有简洁的线条和企业润色。这种经典的赎金风格字体是一封写给 DIY 文化的情书,诞生于杂志、演出海报和地下场景的原始能量的剪切和粘贴混乱。每个字母都是不可预测的,都带有叛逆的边缘。 这种字体有三种不同的样式 – Regular…