初始爬虫5
响应码:
数据处理: re模块(正则表达式)
re模块是Python中用于正则表达式操作的标准库。它提供了一些功能强大的方法来执行模式匹配和文本处理。以下是re模块的一些常见用法及其详细说明:
1. 基本用法
1.1 匹配模式
re.match(pattern, string):
功能:从字符串的开头开始匹配模式。
返回:一个匹配对象(Match对象)如果匹配成功,否则返回None。
示例:
python
import re
result = re.match(r'\d+', '123abc')
if result:
print(result.group()) # 输出 '123'
1.2 搜索模式
re.search(pattern, string):
功能:扫描整个字符串并返回第一个匹配的结果。
返回:一个匹配对象(Match对象)如果匹配成功,否则返回None。
示例:
python
import re
result = re.search(r'\d+', 'abc123def')
if result:
print(result.group()) # 输出 '123'
1.3 查找所有匹配
re.findall(pattern, string):
功能:查找所有匹配的子串并以列表形式返回。
返回:一个列表,其中包含所有匹配的字符串。
示例:
python
import re
results = re.findall(r'\d+', '123 abc 456 def 789')
print(results) # 输出 ['123', '456', '789']
1.4 替换文本
re.sub(pattern, repl, string):
功能:用指定的替换文本替换匹配的模式。
返回:替换后的字符串。
示例:
python
import re
result = re.sub(r'\d+', '#', 'abc 123 def 456')
print(result) # 输出 'abc # def #'
1.5 分割字符串
re.split(pattern, string):
功能:根据模式分割字符串。
返回:一个列表,其中包含分割后的字符串。
示例:
python
import re
result = re.split(r'\W+', 'hello, world! Python is great.')
print(result) # 输出 ['hello', 'world', 'Python', 'is', 'great', '']
2. 正则表达式的特殊字符
.:匹配除换行符外的任何字符。
^:匹配字符串的开头。
$:匹配字符串的结尾。
*:匹配前一个字符零次或多次。
+:匹配前一个字符一次或多次。
?:匹配前一个字符零次或一次。
{n}:匹配前一个字符恰好n次。
{n,}:匹配前一个字符至少n次。
{n,m}:匹配前一个字符至少n次,但不超过m次。
[]:匹配括号内的任意字符。
|:表示“或”操作。
\d:匹配任何数字,等同于[0-9]。
\D:匹配任何非数字字符。
\w:匹配任何字母数字字符,等同于[a-zA-Z0-9_]。
\W:匹配任何非字母数字字符。
\s:匹配任何空白字符,包括空格、制表符和换行符。
\S:匹配任何非空白字符。
3. 匹配对象方法
group():返回匹配的字符串。
groups():返回一个包含所有匹配组的元组。
start():返回匹配的开始位置。
end():返回匹配的结束位置。
span():返回匹配的起始和结束位置的元组。
示例:
python
import re
# 定义模式和字符串
pattern = r'(\d+)'
string = 'There are 123 apples and 456 oranges.'
# 使用 re.search 查找第一个匹配
match = re.search(pattern, string)
if match:
print(match.group()) # 输出 '123'
print(match.groups()) # 输出 ('123',)
# 使用 re.findall 查找所有匹配
matches = re.findall(pattern, string)
print(matches) # 输出 ['123', '456']
4. 编译正则表达式
re.compile(pattern):
功能:将正则表达式编译成一个正则表达式对象,可以多次使用。
示例:
import re
pattern = re.compile(r'\d+')
result = pattern.findall('The numbers are 123 and 456.')
print(result) # 输出 ['123', '456']
模拟github登录(异地登录需要邮件验证码未解决)
GitHub网站:https://github.com/login

勾选Preserve log,记录每次响应:

登录后查看post请求产生的Payload,此处信息可以两次登录对比看,以此得到想要模拟的登录信息:

完整实现github登录代码:
# -*- coding: utf-8 -*-
import re# 1.获取并模拟登录操作 2.保存登录会话信息 3.验证是否登录成功
import requests
from requests import Sessiondef do_auth_token(session: Session):global responseresponse = session.get('https://github.com/login')if response.status_code != 200:print("请求失败,请稍后再试!")exit(0)login_html = response.content.decode()auth_token = re.findall(r'name="authenticity_token" value="(.*?)"', login_html)[0]return auth_tokendef do_auth_login(session: Session):post_data = {"commit": "Sign in","authenticity_token": auth_token,"login": "123456","password": "123456", # 登录密码,为了个人账号安全我这里不是真实密码"webauthn-conditional": "undefined","javascript-support": "true","webauthn-support": "supported","webauthn-iuvpaa-support": "unsupported","return_to": "https://github.com/login"}response = session.post(url='https://github.com/session', data=post_data)if response.status_code != 200:print("请求失败,请检查参数!")else:print("请求session 成功!")def do_login_status(session: Session):response = session.get('https://github.com/csqting')html_content = response.contentresponse1 = re.findall(r'<title>(.+?)(GitHub)?</title>', html_content.decode('utf-8'))try:end_str = response1[0][1]except IndexError:end_str = ""if end_str == "":# 个人主页的title内容如果结尾没有GitHub,说明登录成功print("登录成功!")else:print("登录失败!")with open("github_profile.html", "wb") as f:f.write(html_content)if __name__ == '__main__':# 使用session进行状态保持session = requests.session()session.headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36'}# 1. 获取并模拟登录操作auth_token = do_auth_token(session)# 2. 保存登录会话信息do_auth_login(session)# 3. 验证是否登录成功do_login_status(session)
到此requests模块基本结束,下面就是数据提取的学习。
相关文章:
初始爬虫5
响应码: 数据处理: re模块(正则表达式) re模块是Python中用于正则表达式操作的标准库。它提供了一些功能强大的方法来执行模式匹配和文本处理。以下是re模块的一些常见用法及其详细说明: 1. 基本用法 1.1 匹配模式 …...
深度盘点:2024年企业最喜欢用的WMS仓库管理系统有哪些?
本文将列举国内外知名的仓库管理系统,从每个系统的适用范围、核心功能、特点来为大家解读。为企业选型提供参考! WMS系统是Warehouse Management System(仓库管理系统)的简称,它是一个帮助企业和仓库管理者高效管理仓库…...
qt如何通过特定字符将字符串拆分写入输入?
在Qt中,处理字符串并基于特定字符拆分字符串然后将其写入(比如输入控件、文件等)是一项常见的任务。Qt提供了丰富的字符串处理功能,其中最常用的类是QString。以下是一个简单的示例,展示如何使用Qt和QString类基于特定…...
结构体实现位段
目录 1.什么是位段 2.位段的计算 3. 位段的内存分配 4.位段的跨平台问题 5.位段的应⽤ 6.位段使⽤的注意事项 1.什么是位段 段位的声明和结构体是类似的,但有两个不同之处: 1. 位段的成员必须是 int ,unsigned int,或 sign…...
刷题DAY35
判断回文数 题目:MM们都爱美,“回文”就是一种非常美的特殊的数或者文字短语,他们无论是顺读还是倒读,结果都一样。例如:12321, 55555,45554。如果GG们动不动来一段回文向MM们表达一下…...
LVS--负载均衡调度器
文章目录 集群和分布式集群分布式 LVS介绍LVS特点LVS工作原理LVS集群架构 LVS集群中的术语CIPVIPRSDIPRIP LVS集群的工作模式NAT模式DR模式DR的工作原理DR的特点:DR的网络配置1.配置负载均衡器2.配置后端服务器lo接口的作用 3.测试连接: DR的典型应用场景 TUN模式 L…...
windows@共享网络共享打印机@局域网内远程调用打印机打印
文章目录 abstract流程简述预备工作启动服务🎈启用网络发现和共享开关检查共享密码保护(可选) 相关概念通过GUI设置局域网共享打印机使用开始菜单直接跳转到打印机设置逐步操作 命令行配置方式使用net命令共享打印机使用powershell相关模块配置 使用PowerShell 配置…...
sql格式化工具
1.在线格式化工具:https://www.qianbo.com.cn/Tool/Beautify/Sql-Formatter.html 2. 格式化后用拼接 string sql " SELECT rack.rackRow,rack.rackColumn,rack.rackLayer FROM rack LEFT JOIN TaskListON rack.rackColumn TaskList.Unload_ColAND rack.rackRow TaskL…...
[Python办公]常用Python数据采集爬虫技术对比
常用的数据采集技术可以分为以下几种: 1.网页抓取(Web Scraping) 网页抓取是通过模拟浏览器行为或直接发送请求来获取网页内容的技术。其核心目标是从 HTML 网页中提取有价值的数据。 常用工具:requests、BeautifulSoup、Selen…...
相机光学(三十七)——自动对焦原理
1.自动对焦的三种方式 目前在手机上采用的自动对焦系统包括反差对焦、相位对焦和激光对焦三种方案,下面我们来看一下它们的工作原理和相互之间的区别是什么。 1.1反差对焦【CDAF】- Contrast Detection Auto Focus 反差对焦是目前普及率最高、使用最广泛、成本相对…...
Go语言现代web开发05 指针和结构体
指针 Pointers are complex data types that store the memory address of value. Simply put, if we have a value stored in the memory address as 100 and a pointer to that value, the pointer value will be 100. The default value for a pointer is nil. Nil pointer…...
Postgresql 删除数组中的元素
extra为 {“a”: [null, 3, null],“b”: 111} 使用sql 将extra中a中的null移除 第一步: 首先先把[null, 3, null]移除, select json_agg(elem) filter ( where elem ! null ) from (select jsonb_array_elements([null,3,null]::jsonb) as elem) t;这…...
docker 多服务只暴露一个客户端
业务场景 docker部署多个服务时候,当为了安全考虑 部署了多个服务,数据库,缓存库,文件服务器啥的,如果全都暴露的话可能会增加资源侵入的风险,所以只需要挂载一个客户端端口给外部访问即可,其他服务均在内网,保障资源安全 docker 网络 可以把容器们都放在同一网络下,由于docke…...
DFS算法专题(二)——穷举vs暴搜vs深搜vs回溯vs剪枝【OF决策树】
目录 1、决策树 2、算法实战应用【leetcode】 2.1 题一:全排列 2.2.1 算法原理 2.2.2 算法代码 2.2 题二:子集 2.2.1 算法原理【策略一】 2.2.2 算法代码【策略一】 2.2.3 算法原理【策略二,推荐】 2.2.4 算法代码【策略二&#x…...
Spring Security 快速开始
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId></dependency> 一、认证 1、从数据中读数据完成认证 Service public class MyUserDetailsService implements UserDeta…...
Lua5.3 参考手册
《Lua 5.3 参考手册》是对 Lua 5.3 版本语言的官方定义。这份手册详细描述了 Lua 语言的语法、语义以及标准库和 C API。它是由巴西里约热内卢 Pontifical Catholic 大学的 PUC-Rio 团队开发的,并且是一个自由软件,广泛应用于世界各地的产品和项目中【9†…...
Centos如何配置阿里云的yum仓库作为yum源?
背景 Centos在国内访问官方yum源慢,可以用国内的yum源,本文以阿里云yum源为例说明。 快速命令 sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.a…...
力扣139-单词拆分(Java详细题解)
题目链接:139. 单词拆分 - 力扣(LeetCode) 前情提要: 因为本人最近都来刷dp类的题目所以该题就默认用dp方法来做。 最近刚学完背包,所以现在的题解都是以背包问题为基础再来写的。 如果大家不懂背包问题的话&#…...
CSS —— display属性
用于指定一个元素在页面中的显示方式 HTML中标签元素大体被分为三种类型:块元素、行内元素和行内块元素 块元素 :block 1.独占一行 2.水平方向,占满它父元素的可用空间(宽度是父级的100%) 3.垂直方向,占据的…...
BTC ETF资金流入暴涨400%,市场下一步将如何发展?
近期,BTC现货ETF(交易所交易基金)市场出现了显著的资金流入,尤其是在9月10日,BTC ETF吸引了近1.17亿美元的资金流入,相较于前一天的3729万美元,暴涨了400%。这种现象引发了市场广泛关注…...
终极指南:在Windows上直接安装安卓APK文件的5个简单步骤
终极指南:在Windows上直接安装安卓APK文件的5个简单步骤 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 想在Windows电脑上运行安卓应用,但又厌…...
对比直接使用厂商 API 体验 Taotoken 在路由容灾上的价值
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 对比直接使用厂商 API 体验 Taotoken 在路由容灾上的价值 在开发依赖大模型能力的应用时,服务的连续性与稳定性是保障用…...
手把手教你给STM32MP157开发板接上HDMI显示器(基于Sii9022A芯片与设备树配置)
STM32MP157开发板HDMI显示实战:从硬件连接到设备树配置全解析 引言 当你第一次拿到STM32MP157开发板时,最令人兴奋的莫过于看到图形界面在屏幕上亮起的那一刻。但现实往往很骨感——手头可能没有配套的LCD屏幕,而HDMI显示器却是大多数开发者桌…...
Translumo:5分钟掌握Windows实时屏幕翻译终极指南
Translumo:5分钟掌握Windows实时屏幕翻译终极指南 【免费下载链接】Translumo Advanced real-time screen translator for games, hardcoded subtitles in videos, static text and etc. 项目地址: https://gitcode.com/gh_mirrors/tr/Translumo 你是否在玩外…...
Steam成就管理器终极指南:3步修复错失的游戏成就
Steam成就管理器终极指南:3步修复错失的游戏成就 【免费下载链接】SteamAchievementManager A manager for game achievements in Steam. 项目地址: https://gitcode.com/gh_mirrors/st/SteamAchievementManager Steam Achievement Manager(SAM&a…...
可穿戴电子模块化连接方案:5mm微型按扣实现电路板与织物的可插拔连接
1. 项目概述与核心思路在折腾可穿戴电子项目时,最让人头疼的问题之一,就是如何让电路板与衣物既可靠连接,又能方便地拆下来。传统的做法要么是用导电胶带粘(不牢靠、易氧化),要么是直接把线焊死在板子上然后…...
量子私有信息检索(QPIR)技术解析与应用前景
1. 量子私有信息检索技术概述量子私有信息检索(Quantum Private Information Retrieval, QPIR)是密码学领域的一项突破性技术,它允许用户从数据库中检索特定条目而不泄露被查询的是哪个条目。这项技术的核心价值在于解决了隐私保护与数据获取…...
基于MCP协议的AI Agent远程SSH安全操作实践指南
1. 项目概述与核心价值最近在折腾AI Agent的开发,发现一个挺有意思的现象:很多开发者都卡在了“如何让AI安全、可控地操作远程服务器”这一步。你可能会想到直接给AI一个SSH私钥,但这无异于把自家大门的钥匙扔给一个还在学习走路的机器人&…...
【Midjourney数字艺术风格终极指南】:20年AI视觉专家亲授7大核心风格参数调优法则(含V6.1新增Realism Mode实测数据)
更多请点击: https://intelliparadigm.com 第一章:Midjourney数字艺术风格演进与V6.1核心变革 Midjourney自V1发布以来,其图像生成范式经历了从纹理模拟到语义理解、从风格模仿到跨模态协同的深层跃迁。V6.1标志着模型首次在原生架构中集成…...
基于MCP协议构建AI金融数据可视化服务器:从原理到实战部署
1. 项目概述:一个为AI智能体提供实时金融数据可视化的MCP服务器最近在折腾AI智能体(Agent)的生态,发现一个挺有意思的痛点:当你想让AI帮你分析股票、基金或者加密货币时,它往往只能给你干巴巴的数字和文字描…...
