python使用cookie、session、selenium实现网站登录(爬取信息)
一、使用cookie
这段代码演示了如何使用Python的urllib
和http.cookiejar
模块来实现网站的模拟登录,并在登录后访问需要认证的页面。
# 导入必要的库
import requests
from urllib import request, parse# 1. 导入http.cookiejar模块中的CookieJar类,用于存储和管理Cookie
from http.cookiejar import CookieJar# 2. 导入HTTPCookieProcessor,用于处理HTTP请求中的Cookie
from urllib.request import HTTPCookieProcessor# 设置请求头,模拟浏览器访问
header = {"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36"
}# 创建一个CookieJar对象来存储和管理Cookie
cookiejar = CookieJar()# 创建一个HTTPCookieProcessor处理器,用于处理Cookie
handler = HTTPCookieProcessor(cookiejar)# 使用处理器构建一个opener对象,这个opener会自动处理Cookie
opener = request.build_opener(handler)# 准备登录表单数据
data = {'__VIEWSTATE': 'pm4yVT0tOjA36YHPhIUtUmKXH1wGoOp7OTyI8HH+3PU0Z6E4bohm2CzOOCCQ9w2fxqb7oHLCxM4uHc+BiH5Ul4xTGRDehq9E/QXr22y4HX+qpA4v+j5qfIvc3PU=','__VIEWSTATEGENERATOR': 'B6E3F9D8','txtUser': '', # 用户名'txtPass': '', # 密码'btnLogin': '' # 登录按钮 使用自己的
}# 登录页面的URL
loginurl = "http://210.44.176.97/datajudge/login.aspx"# 创建登录请求对象
# 注意:这里将表单数据编码为URL格式,并转换为字节流
req = request.Request(loginurl, data=parse.urlencode(data).encode("utf-8"), headers=header
)# 发送登录请求,opener会自动保存服务器返回的Cookie
opener.open(req)# 如果上面没有抛出异常,意味着登录成功
# 现在可以访问需要登录后才能查看的页面
url = " " #找到自己的# 创建访问请求对象
reqm = request.Request(url, headers=header)# 发送请求,opener会自动带上之前保存的Cookie
resp = opener.open(reqm)# 打印返回的页面内容
print(resp.read().decode("utf-8"))
-
Cookie处理机制:
-
使用
CookieJar
类创建Cookie容器 -
通过
HTTPCookieProcessor
创建处理器,自动处理HTTP请求中的Cookie -
构建
opener
对象,后续所有请求都通过这个opener发送,会自动管理Cookie
-
-
模拟登录过程:
-
准备登录表单数据(包括隐藏字段如
__VIEWSTATE
) -
发送POST请求到登录页面
-
服务器返回的Cookie会被自动保存在
CookieJar
中
-
-
访问受保护页面:
-
使用同一个
opener
发送请求 -
opener会自动带上之前保存的Cookie,证明用户已登录
-
成功获取需要认证才能访问的页面内容
-
这种技术常用于:
-
爬取需要登录的网站数据
-
自动化测试需要认证的Web应用
-
模拟用户行为进行网站监控
注意:在实际应用中,应该遵守网站的robots.txt协议和使用条款,不要滥用这种技术。
运行结果:
二、使用session
# 导入requests库,用于发送HTTP请求
import requests# 设置请求头,模拟浏览器访问
# 注意:这里的User-Agent伪装成Chrome浏览器
header = {"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36"
}# 准备登录表单数据
# 注意:ASP.NET网站通常会有__VIEWSTATE和__VIEWSTATEGENERATOR等隐藏字段
data = {'__VIEWSTATE': 'pm4yVT0tOjA36YHPhIUtUmKXH1wGoOp7OTyI8HH+3PU0Z6E4bohm2CzOOCCQ9w2fxqb7oHLCxM4uHc+BiH5Ul4xTGRDehq9E/QXr22y4HX+qpA4v+j5qfIvc3PU=','__VIEWSTATEGENERATOR': 'B6E3F9D8','txtUser': '', # 用户名输入框'txtPass': '', # 密码输入框'btnLogin': '' # 登录按钮 自己的
}# 创建一个会话对象
# 会话对象会自动保持Cookie,用于维持登录状态
session = requests.session()# 登录页面的URL
loginurl = "" #自己寻找# 发送POST请求进行登录
# 使用data参数发送表单数据,headers参数设置请求头
# 登录成功后,服务器返回的Cookie会自动保存在session中
session.post(loginurl, data=data, headers=header)# 如果上面没有抛出异常,意味着登录成功
# 现在可以访问需要登录后才能查看的页面
url = ""# 使用同一个session发送GET请求
# session会自动带上之前登录时获得的Cookie
resp = session.get(url, headers=header)# 打印返回的页面内容
# resp.text会自动解码响应内容
print(resp.text)
-
请求头设置:
-
设置User-Agent模拟Chrome浏览器访问,避免被服务器识别为爬虫
-
-
表单数据准备:
-
__VIEWSTATE
和__VIEWSTATEGENERATOR
是ASP.NET特有的隐藏字段,用于表单状态管理 -
txtUser
和txtPass
分别对应登录表单的用户名和密码输入框 -
btnLogin
是登录按钮的name属性
-
-
会话管理:
-
requests.session()
创建一个会话对象,该对象会自动处理Cookie -
所有通过这个session对象发送的请求都会自动携带相同的Cookie
-
-
登录过程:
-
session.post()
发送POST请求到登录页面 -
服务器验证成功后返回的Set-Cookie头会被自动保存
-
-
访问受保护页面:
-
使用同一个session对象发送GET请求
-
自动携带登录Cookie,证明用户已认证
-
获取需要登录才能访问的页面内容
-
-
会话保持:
-
requests.session()
创建的会话对象会自动管理Cookie -
相比手动处理Cookie更加方便可靠
-
-
ASP.NET特性:
-
ASP.NET网站通常需要提交
__VIEWSTATE
等隐藏字段 -
这些字段的值可以从网页源码或第一次GET请求的响应中获取
-
-
安全性注意事项:
-
代码中包含明文密码,实际应用中应该避免
-
可以考虑从配置文件或环境变量读取敏感信息
-
-
异常处理:
-
实际应用中应该添加try-except块处理网络异常
-
可以检查resp.status_code确认请求是否成功
-
典型应用场景
这种代码通常用于:
-
爬取需要登录的网站数据
-
自动化测试Web应用
-
监控需要认证的网页内容变化
-
自动化操作Web系统
注意:使用时应遵守目标网站的服务条款和robots.txt规定。
运行结果:
三、使用selenium
# 导入所需模块
import time # 用于添加等待时间
from selenium import webdriver # 主模块,用于浏览器自动化
from selenium.webdriver.chrome.service import Service as ChromeService # Chrome服务
from selenium.webdriver.common.by import By # 定位元素的方式# 设置ChromeDriver路径
driver_path = r"E:\chromedriver\chromedriver.exe" # ChromeDriver可执行文件路径# 创建Chrome服务实例
service = ChromeService(executable_path=driver_path)# 初始化Chrome浏览器驱动
driver = webdriver.Chrome(service=service)# 目标登录页面URL
loginurl = ""# 打开登录页面
driver.get(loginurl)# 使用XPath定位用户名输入框并输入用户名
driver.find_element(By.XPATH, "//input[@id='txtUser']").send_keys("18110203023")# 使用XPath定位密码输入框并输入密码
driver.find_element(By.XPATH, "//input[@id='txtPass']").send_keys("范经栋")# 等待3秒,确保页面加载完成(实际应用中建议使用显式等待)
time.sleep(3)# 使用XPath定位登录按钮并点击
driver.find_element(By.XPATH, "//input[@id='btnLogin']").click()# 等待2秒,确保登录完成
time.sleep(2)# 打印当前页面的源代码(登录后的页面)
print(driver.page_source)# 注释掉的代码是之前使用requests库实现的版本,与当前selenium实现做对比
# session.post(loginurl,data=data,headers=header)
# # 意味着登录成功,session对象中已经存储了登录成功地数据
# url="http://210.44.176.97/datajudge/test.aspx"
#
# resp=session.get(url,headers=header)
# print(resp.text)
-
初始化浏览器驱动:
-
通过
ChromeService
指定ChromeDriver路径 -
创建
webdriver.Chrome
实例来控制浏览器
-
-
页面导航:
-
driver.get(loginurl)
打开登录页面
-
-
元素定位与操作:
-
使用XPath定位用户名输入框(
id='txtUser'
)并输入用户名 -
使用XPath定位密码输入框(
id='txtPass'
)并输入密码 -
使用XPath定位登录按钮(
id='btnLogin'
)并点击
-
-
等待机制:
-
time.sleep(3)
在输入密码后等待3秒 -
time.sleep(2)
在点击登录后等待2秒 -
(注:实际项目中建议使用selenium的显式等待
WebDriverWait
)
-
-
结果获取:
-
driver.page_source
获取当前页面的HTML源码
-
与requests实现的区别
-
模拟方式:
-
selenium实际控制浏览器操作,完全模拟用户行为
-
requests直接发送HTTP请求,更轻量但无法处理JavaScript
-
-
验证处理:
-
selenium能自动处理图片验证码等需要人工交互的情况
-
requests需要额外处理这类验证
-
-
性能:
-
selenium启动浏览器开销大,运行速度慢
-
requests更高效,适合大规模爬取
-
-
应用场景:
-
selenium适合需要完全模拟浏览器行为的复杂场景
-
requests适合简单的API调用或静态页面抓取
-
运行结果:
相关文章:
python使用cookie、session、selenium实现网站登录(爬取信息)
一、使用cookie 这段代码演示了如何使用Python的urllib和http.cookiejar模块来实现网站的模拟登录,并在登录后访问需要认证的页面。 # 导入必要的库 import requests from urllib import request, parse# 1. 导入http.cookiejar模块中的CookieJar类,用…...
STM32开发板上生成PWM正弦波
在STM32开发板上生成正弦波通常需要结合定时器(TIM)、数模转换器(DAC)或脉宽调制(PWM)以及时钟系统的配置。以下是分步指南: 方法1:使用DAC 定时器(推荐) 步…...
Spring Boot 实现文件秒传功能
前言 在开发Web应用时,文件上传是一个常见需求。然而,当用户需要上传大文件或相同文件多次时,会造成带宽浪费和服务器存储冗余。此时可以使用文件秒传技术通过识别重复文件,实现瞬间完成上传的效果,大大提升了用户体验…...
【Vue2】数据绑定_MVVM模型_数据代理_事件处理
目录 一、 数据绑定 1. Vue中有2种数据绑定的方式: 2. 响应式原理 el 与 data 的两种写法 二、 MVVM模型 三、 数据代理 1.回顾Object defineproperty方法 2. 何为数据代理 3.Vue中的数据代理 四、 事件处理 1.事件的基本使用: 2. Vue中的事…...
Python数据类型-dict
Python数据类型-dict 字典是Python中一种非常强大且常用的数据类型,它使用键-值对(key-value)的形式存储数据。 1. 字典的基本特性 无序集合:字典中的元素没有顺序概念可变(mutable):可以动态添加、修改和删除元素键必须唯一且不可变&…...
win10之mysql server 8.0.41安装
一 mysql server 下载 官网下载地址页面 https://dev.mysql.com/downloads/mysql/二 免装版使用步骤 1 解压 下载完成后,解压文件夹,如下所示: 2 执行安装命令 D:\soft\mysql\mysql-8.0.41-winx64\mysql-8.0.41-winx64\bin>mysqld --install Service successfully in…...
解决Oracle PL/SQL中“表或视图不存在“错误的完整指南
解决Oracle PL/SQL中"表或视图不存在"错误的完整指南 前言问题概述根本原因分析一、 编译时与运行时验证差异二、权限问题三、 Schema命名问题 实际案例演示案例1:动态分表查询案例2:权限不足的场景 实用排查步骤排查流程图最佳实践建议解决方…...
从实用的角度聊聊Linux下文本编辑器VIM
本文从实用的角度聊聊Vim的常用命令。何为实用?我举个不实用的例子大家就明白了,用vim写代码。;) “vim是从 vi 发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用,和Emacs并列成…...
MySQL的进阶语法8(SQL优化——insert、主键、order by、group by、limit、count和update)
目录 一、插入数据 1.1 insert 1.2 大批量插入数据 二、主键优化 2.1 数据组织方式 2.2 页分裂 2.2.1 主键顺序插入效果 2.2.2 主键乱序插入效果 2.3 页合并 2.4 索引设计原则 三、order by优化 3.1 执行以下两条语句(无索引) 3.2 创建索引…...
STM32F103C8T6单片机硬核原理篇:讨论GPIO的基本原理篇章1——只讨论我们的GPIO简单输入和输出
目录 前言 输出时的GPIO控制部分 标准库是如何操作寄存器完成GPIO驱动的初始化的? 问题1:如何掌握GPIO的编程细节——跟寄存器如何打交道 问题2:哪些寄存器,去哪里找呢? 问题三,寄存器的含义ÿ…...
FreeRTOS源码下载分享
FreeRTOS源码下载分享 官网下载太慢了,分享下FreeRTOSv202411 FreeRTOSv202411.00.zip 链接: https://pan.baidu.com/s/1P4sVS5WroYEl0WTlPD7GXg 提取码: g6aq...
PyArrow 核心技术与应用:高效数据处理与跨生态集成实践
Apache Arrow 作为列式内存数据格式的行业标准,其 Python 接口 PyArrow 正在重塑数据科学生态。本文深入解析 PyArrow 的核心计算能力,涵盖统计函数、分组聚合、窗口操作及跨库集成,通过完整代码示例演示如何利用其高性能特性优化数据处理流程…...
机试题——PCB印刷电路板布线
题目描述 在 PCB 印刷电路板设计中,器件之间的连线需要避免线路的阻抗值增大,而且器件之间还可能存在其他干扰源。为了简化问题,我们将电路板简化为一个 ( M * N ) 的矩阵,每个位置(单元格)的值表示其源干…...
数据化管理(一)---什么是数据化管理
目录 一、什么是数据化管理1.1 “聪明”的销售人员1.2 数据化管理的概念1.3 数据化管理的意义1.4 数据化管理的四个层次1.4.1 业务指导管理1.4.2 营运指导管理1.4.3 经营策略管理1.4.4 战略规划管理 1.5 数据化管理流程图1.5.1 分析需求1.5.2 收集数据1.5.3 整理数据1.5.4 分析…...
Android 10.0 通过广播控制systemui状态栏动态显示和隐藏功能实现
1.前言 在10.0的系统rom定制化开发中,在某些特定的产品开发中,需要通过接口来控制系统状态栏的显示和隐藏, 所以就需要了解systemui状态栏的显示构造过程,然后通过相关接口来显示和隐藏状态栏,接下来就来 实现相关的功…...
Linux服务器安装MinerU
安装MinerU 为了确保项目的稳定性和可靠性,我们在开发过程中仅对特定的软硬件环境进行优化和测试。这样当用户在推荐的系统配置上部署和运行项目时,能够获得最佳的性能表现和最少的兼容性问题。 这里我们以基础的 [[Linux服务器部署PaddleX实战教程]] 使…...
深挖 DeepSeek 隐藏玩法·智能炼金术2.0版本
前引:屏幕前的你还在AI智能搜索框这样搜索吗?“这道题怎么写”“苹果为什么红”“怎么不被发现翘课” ,。看到此篇文章的小伙伴们!请准备好你的思维魔杖,开启【霍格沃茨模式】,看我如何更新秘密的【知识炼金…...
Vite 内联 CSS 和 JS 的解决方案
使用 vite-plugin-singlefile(推荐) 这个插件专门用于将整个 Vite 应用打包成单个 HTML 文件,内联所有 JS 和 CSS。 安装 pnpm i vite-plugin-singlefile -D配置 vite.config.js import { defineConfig } from vite import { viteSingleF…...
致敬生物信息学先驱:玛格丽特·戴霍夫(Margaret Dayhoff,1925-1983)
李升伟 编译 社论 发布于:2025年3月11日 《自然-计算科学》第五卷 第187页(2025年) 在玛格丽特戴霍夫(Margaret Dayhoff,1925-1983)百年诞辰之际,我们聚焦这位先驱在生物信息学领域留下的不朽…...
Knife4j文档请求异常 空指针
打开swagger文档报空指针异常 java.lang.NullPointerException: nullat springfox.documentation.oas.mappers.SchemaMapper.model(SchemaMapper.java:97)at springfox.documentation.oas.mappers.SchemaMapper.mapModel(SchemaMapper.java:85)at springfox.documentation.oas…...
笔记2——网络参考模型
一、OSI参考模型: 应用层: 报文 给应用程序提供接口 表示层: 进行数据格式的转换 会话层: 在通讯双方之间建立、管理和终止会话 传输层: 数据段;建立、维护、取消一次端到端的数据传输过程;控制…...
Spring AOP + Redis缓存设计实战:基于注解的优雅三防方案(击穿/穿透/雪崩)
文章目录 摘要 正文一、缓存设计的痛点与破局二、核心代码拆解:四层防御设计1. 注解驱动(ZywCacheable)2. 缓存击穿防护:双重检查锁3. 缓存穿透防护:空值标记4. 缓存雪崩防护:TTL随机算法 三、生产环境最佳…...
洛谷题单3-P5720 【深基4.例4】一尺之棰-python-流程图重构
题目描述 《庄子》中说到,“一尺之棰,日取其半,万世不竭”。第一天有一根长度为 a a a 的木棍,从第二天开始,每天都要将这根木棍锯掉一半(每次除 2 2 2,向下取整)。第几天的时候木…...
jdk21新特性详解使用总结
jdk21新特性详解总结 1.StringBuilder和StringBuffer新增了一个repeat方法 /*** Java 21的StringBuilder和StringBuffer新增了一个repeat方法*/public static void repeatStr(){var sbnew StringBuilder().repeat("*",10);System.out.println(sb);}运行结果如下&…...
解码 collections.Counter - 频率统计的利器
文章目录 前言一、什么是 collections.Counter?二、 基本用法:从创建到访问2.1 创建 Counter 对象2.2 访问计数三、 核心功能:更新与排序3.1 更新计数3.2 获取常见元素四、高级用法:数学运算与转换4.1 数学运算4.2 类型转换五、 实际应用:Counter 的威力5.1 词频统计5.2 在…...
Mysql基础笔记
# 1.SQL数据类型 可以去这篇文章看看: 最全 SQL 字段类型(4种)、属性(6种)总结:https://blog.csdn.net/weixin_45654582/article/details/119157403 ### 一.整数类型 ### 二.小数类型(2种) 1、浮点型:…...
HttpClient-03.入门案例-发送POST方式请求
一.发送POST方式请求 编写代码: 1.创建一个HttpClient对象 2.创建一个HttpGet请求 3.发送http的get请求并获得响应对象 4.通过发送GET请求获取的CloseableHttpResponse响应对象来获取状态码以及响应数据 package com.sky.test;import com.alibaba.fastjson.JS…...
Oracle数据库数据编程SQL<3.6 PL/SQL 包(Package)>
包是Oracle数据库中一种重要的PL/SQL程序结构,它将逻辑相关的变量、常量、游标、异常、过程和函数组织在一起,提供了更好的封装性和模块化。在大型项目中,可能有很多模块,而每一个模块又有自己的存过、函数等。而这些存过、函数默…...
每日一题---买卖股票的最好时机(一)、(二)
目录 买卖股票的最好时机(一) 一、题目链接:买卖股票的最好时机(一)_牛客题霸_牛客网 二、解题思路 三、代码实现 买卖股票的最好时机(二) 一、题目链接:买卖股票的最好时机(二)_牛客题霸_牛客网 编辑 二、解题思路 …...
XSS漏洞的分类解释和演示实验
XSS漏洞:跨站脚本攻击(cross site scripting),为了不和CSS混淆而改名。攻击者网web插入恶意script代码,当用户浏览页面时,嵌入的代码会被执行。 危害:盗取各类用户,强制发送电子邮件,网站挂马等…...
【Pandas】pandas DataFrame info
Pandas2.2 DataFrame Attributes and underlying data 方法描述DataFrame.index用于获取 DataFrame 的行索引DataFrame.columns用于获取 DataFrame 的列标签DataFrame.dtypes用于获取 DataFrame 中每一列的数据类型DataFrame.info([verbose, buf, max_cols, …])用于提供 Dat…...
JP1 Systemwalker 和 unirita的A-AUTO制品对比
以下是 JP1 SystemWalker(日立) 与 Unirita A-AUTO 的对比分析。两者均为日本企业开发的IT运维自动化工具,但在功能定位、技术架构和适用场景上存在显著差异: 1. 产品背景与市场定位 维度JP1 SystemWalkerUnirita A-AUTO开发商日…...
探索鸿蒙操作系统:迎接万物互联新时代
# 探索鸿蒙操作系统:迎接万物互联新时代 在科技飞速发展的当下,万物互联的时代浪潮正席卷而来。在这个全新的时代背景下,移动应用开发领域面临着前所未有的挑战,同时也迎来了诸多机遇。而鸿蒙操作系统(HarmonyOS&…...
NOIP2010提高组.引水入城
*前置题目 901. 滑雪 #include <iostream> #include <algorithm> #include <cstring>using namespace std;const int N 310, INF 0x3f3f3f3f; const int dx[4] {0, -1, 0, 1}, dy[4] {1, 0, -1, 0};int n, m, h[N][N]; int f[N][N]; int ans;int dfs(i…...
NLP高频面试题(二十九)——大模型解码常见参数解析
在大语言模型的实际应用中,如何更有效地控制文本生成的质量与多样性,一直是热门研究话题。其中,模型解码(decode)策略至关重要,涉及的主要参数包括 top_k、top_p 和 temperature 等。本文将详细介绍这些常见…...
【AI产品分享】面向图片的原始位置翻译功能
1. 背景 在撰写文字材料时,往往需要配套图像以增强表达效果。然而,有时自己绘制的图可能达不到理想的质量,而在其他文献材料中却能发现更清晰、直观的示例。希望在“站在巨人的肩膀上”优化自己的图像时,通常希望在保留原始图像的…...
为什么要为 REST API 添加认证
在不断发展的 Web 服务领域,REST API 在各种软件系统之间的通信中扮演着至关重要的角色。然而,强大的功能也伴随着巨大的责任。确保敏感数据的安全性和通信的可靠性是至关重要的。这时,认证就显得尤为重要。通过使用认证,我们可以…...
AI 数字人短视频数字人源码部署揭秘:开启虚拟内容创作新纪元
在当下短视频盛行的时代,AI 数字人短视频以其独特的魅力吸引着大众的目光。虚拟偶像在舞台上活力四射,电商平台中数字人不知疲倦地推荐产品,这些令人瞩目的表现背后,源码的部署起着至关重要的作用。它如同幕后的神奇工匠ÿ…...
佳能imageRUNNER 2206N基本参数及管理员密码
基本参数: 产品类型 激光数码复合机 颜色类型 黑白 涵盖功能 复印/打印/扫描 速度类型 低速 最大原稿尺寸 A3 复印/打印方式 激光静电转印方式 感光材料 OPC 显影系统 干式单组分显影 定影…...
【Linux篇】探索进程地址空间:计算机背后的虚拟世界
进程地址空间的奥秘:让你理解程序如何在计算机中生存 一. 程序地址空间1.1 基本概念1.2 虚拟内存管理1.3 为什么存在虚拟地址空间1.3.1 意义 2. 最后 本文将介绍进程地址空间的基本概念与结构,帮助读者理解操作系统如何管理和分配内存。进程地址空间指的…...
Docker部署sprintboot后端项目
创建Docker网络 docker network create icjs 部署Redis docker run -d \--network icjs \--name redis \-p 6379:6379 \redis:latest数据持久化 docker run --restartalways --network icjs -p 6379:6379 --name redis -v /opt/docker/redis/redis.conf:/etc/redis/redis.c…...
1.4 基于模拟退火改进蛇算法优化VGG13SE网络超参数的故障诊断模型
本博客来源于CSDN机器鱼,未同意任何人转载。 更多内容,欢迎点击本专栏,查看更多内容。 目录 0 引言 1 改进原理 2 本文改进方法 3 改进蛇优化VGG13SE的故障诊断模型 4 结语 0 引言 在【博客】中,我们采用了蛇算法来对VGG1…...
Vue + Scss项目中实现自定义颜色主题的动态切换
当时面试的时候遇到面试官问的一个问题如何实现自定义颜色主题切换,当时我做的只是elementUIPlus提供的暗黑和默认主题切换 theme.scss // 增加自定义主题类型 $themes: (light: (/* 原有配置保持不变 */),dark: (/* 原有配置保持不变 */),custom: () // 空映射…...
C#实现HiveQL建表语句中特殊数据类型的包裹
用C#实现搜索字符串中用’(‘和’)‘包裹的最外层的里面里面的字符串,将里面的记录按一个或多个空格、换行或tab,或者是它的在一起的组合作为分隔,分隔出多个字符串组,如果组中有字符串中同时包含’<‘和’>’,则…...
27 python 标准库概览
在办公室里,每个员工都有一套预装的办公软件:Word 处理文档、Excel 制作表格、Outlook 收发邮件... Python 的标准库就像公司预装的 "办公全家桶",包含 100 多个模块,覆盖文件操作、时间管理、数据分析等日常需求,无需额外安装即可直接使用。 一、文件管理 1.…...
whisper 语音识别的安装与使用
Whisper 是由OpenAI开发的开源自动语音识别(ASR)模型,不仅支持音频转录,还可以用于视频转录。通过调用ffmpeg处理视频,支持主流音视频格式的转录。 安装 安装ffmpeg:下载ffmpeg,Releases B…...
搜广推校招面经六十四
滴滴搜推算法 一、定义一个树结构、特征结构。写一个决策树对样本打分 逆天啊,上来就是暴击 import numpy as np class TreeNode:def __init__(self, feature_indexNone, thresholdNone, leftNone, rightNone, scoreNone):self.feature_index feature_index #…...
zabbix监控网站(nginx、redis、mysql)
目录 前提准备: zabbix-server主机配置: 1. 安装数据库 nginx主机配置: 1. 安装nginx redis主机配置: 1. 安装redis mysql主机配置: 1. 安装数据库 zabbix-server: 1. 安装zabbix 2. 编辑配置文…...
动态规划,如何应用动态规划解决实际问题?
一、动态规划核心概念 动态规划是一种分阶段解决问题的数学方法,它将复杂问题分解为更小的子问题,通过存储子问题的解来避免重复计算。 关键特征: 最优子结构:问题的最优解包含子问题的最优解重叠子问题:问题可…...
常见操作系统特点及区别对比
操作系统名称类型特点主要用途许可证类型内核类型Windows桌面/服务器图形界面友好,软件生态丰富,闭源个人电脑、企业办公专有商业许可混合内核macOS桌面 (Unix-like)高度优化的硬件整合,Unix基础,闭源创意设计、开发专有商业许可混…...