当前位置: 首页 > news >正文

初始爬虫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

响应码&#xff1a; 数据处理&#xff1a; re模块&#xff08;正则表达式&#xff09; re模块是Python中用于正则表达式操作的标准库。它提供了一些功能强大的方法来执行模式匹配和文本处理。以下是re模块的一些常见用法及其详细说明&#xff1a; 1. 基本用法 1.1 匹配模式 …...

深度盘点:2024年企业最喜欢用的WMS仓库管理系统有哪些?

本文将列举国内外知名的仓库管理系统&#xff0c;从每个系统的适用范围、核心功能、特点来为大家解读。为企业选型提供参考&#xff01; WMS系统是Warehouse Management System&#xff08;仓库管理系统&#xff09;的简称&#xff0c;它是一个帮助企业和仓库管理者高效管理仓库…...

qt如何通过特定字符将字符串拆分写入输入?

在Qt中&#xff0c;处理字符串并基于特定字符拆分字符串然后将其写入&#xff08;比如输入控件、文件等&#xff09;是一项常见的任务。Qt提供了丰富的字符串处理功能&#xff0c;其中最常用的类是QString。以下是一个简单的示例&#xff0c;展示如何使用Qt和QString类基于特定…...

结构体实现位段

目录 1.什么是位段 2.位段的计算 3. 位段的内存分配 4.位段的跨平台问题 5.位段的应⽤ 6.位段使⽤的注意事项 1.什么是位段 段位的声明和结构体是类似的&#xff0c;但有两个不同之处&#xff1a; 1. 位段的成员必须是 int &#xff0c;unsigned int&#xff0c;或 sign…...

刷题DAY35

判断回文数 题目&#xff1a;MM们都爱美&#xff0c;“回文”就是一种非常美的特殊的数或者文字短语&#xff0c;他们无论是顺读还是倒读&#xff0c;结果都一样。例如&#xff1a;12321&#xff0c; 55555&#xff0c;45554。如果GG们动不动来一段回文向MM们表达一下&#xf…...

LVS--负载均衡调度器

文章目录 集群和分布式集群分布式 LVS介绍LVS特点LVS工作原理LVS集群架构 LVS集群中的术语CIPVIPRSDIPRIP LVS集群的工作模式NAT模式DR模式DR的工作原理DR的特点:DR的网络配置1.配置负载均衡器2.配置后端服务器lo接口的作用 3.测试连接&#xff1a; DR的典型应用场景 TUN模式 L…...

windows@共享网络共享打印机@局域网内远程调用打印机打印

文章目录 abstract流程简述预备工作启动服务&#x1f388;启用网络发现和共享开关检查共享密码保护(可选) 相关概念通过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数据采集爬虫技术对比

常用的数据采集技术可以分为以下几种&#xff1a; 1.网页抓取&#xff08;Web Scraping&#xff09; 网页抓取是通过模拟浏览器行为或直接发送请求来获取网页内容的技术。其核心目标是从 HTML 网页中提取有价值的数据。 常用工具&#xff1a;requests、BeautifulSoup、Selen…...

相机光学(三十七)——自动对焦原理

1.自动对焦的三种方式 目前在手机上采用的自动对焦系统包括反差对焦、相位对焦和激光对焦三种方案&#xff0c;下面我们来看一下它们的工作原理和相互之间的区别是什么。 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移除 第一步&#xff1a; 首先先把[null, 3, null]移除&#xff0c; 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 题一&#xff1a;全排列 2.2.1 算法原理 2.2.2 算法代码 2.2 题二&#xff1a;子集 2.2.1 算法原理【策略一】 2.2.2 算法代码【策略一】 2.2.3 算法原理【策略二&#xff0c;推荐】 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 团队开发的&#xff0c;并且是一个自由软件&#xff0c;广泛应用于世界各地的产品和项目中【9†…...

Centos如何配置阿里云的yum仓库作为yum源?

背景 Centos在国内访问官方yum源慢&#xff0c;可以用国内的yum源&#xff0c;本文以阿里云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详细题解)

题目链接&#xff1a;139. 单词拆分 - 力扣&#xff08;LeetCode&#xff09; 前情提要&#xff1a; 因为本人最近都来刷dp类的题目所以该题就默认用dp方法来做。 最近刚学完背包&#xff0c;所以现在的题解都是以背包问题为基础再来写的。 如果大家不懂背包问题的话&#…...

CSS —— display属性

用于指定一个元素在页面中的显示方式 HTML中标签元素大体被分为三种类型&#xff1a;块元素、行内元素和行内块元素 块元素 &#xff1a;block 1.独占一行 2.水平方向&#xff0c;占满它父元素的可用空间&#xff08;宽度是父级的100%&#xff09; 3.垂直方向&#xff0c;占据的…...

BTC ETF资金流入暴涨400%,市场下一步将如何发展?

近期&#xff0c;BTC现货ETF&#xff08;交易所交易基金&#xff09;市场出现了显著的资金流入&#xff0c;尤其是在9月10日&#xff0c;BTC ETF吸引了近1.17亿美元的资金流入&#xff0c;相较于前一天的3729万美元&#xff0c;暴涨了400%。这种现象引发了市场广泛关注&#xf…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

【第二十一章 SDIO接口(SDIO)】

第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

Spring Boot面试题精选汇总

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...

DBAPI如何优雅的获取单条数据

API如何优雅的获取单条数据 案例一 对于查询类API&#xff0c;查询的是单条数据&#xff0c;比如根据主键ID查询用户信息&#xff0c;sql如下&#xff1a; select id, name, age from user where id #{id}API默认返回的数据格式是多条的&#xff0c;如下&#xff1a; {&qu…...

怎么让Comfyui导出的图像不包含工作流信息,

为了数据安全&#xff0c;让Comfyui导出的图像不包含工作流信息&#xff0c;导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo&#xff08;推荐&#xff09;​​ 在 save_images 方法中&#xff0c;​​删除或注释掉所有与 metadata …...

LOOI机器人的技术实现解析:从手势识别到边缘检测

LOOI机器人作为一款创新的AI硬件产品&#xff0c;通过将智能手机转变为具有情感交互能力的桌面机器人&#xff0c;展示了前沿AI技术与传统硬件设计的完美结合。作为AI与玩具领域的专家&#xff0c;我将全面解析LOOI的技术实现架构&#xff0c;特别是其手势识别、物体识别和环境…...

ZYNQ学习记录FPGA(一)ZYNQ简介

一、知识准备 1.一些术语,缩写和概念&#xff1a; 1&#xff09;ZYNQ全称&#xff1a;ZYNQ7000 All Pgrammable SoC 2&#xff09;SoC:system on chips(片上系统)&#xff0c;对比集成电路的SoB&#xff08;system on board&#xff09; 3&#xff09;ARM&#xff1a;处理器…...

Android Framework预装traceroute执行文件到system/bin下

文章目录 Android SDK中寻找traceroute代码内置traceroute到SDK中traceroute参数说明-I 参数&#xff08;使用 ICMP Echo 请求&#xff09;-T 参数&#xff08;使用 TCP SYN 包&#xff09; 相关文章 Android SDK中寻找traceroute代码 设备使用的是Android 11&#xff0c;在/s…...

iOS 项目怎么构建稳定性保障机制?一次系统性防错经验分享(含 KeyMob 工具应用)

崩溃、内存飙升、后台任务未释放、页面卡顿、日志丢失——稳定性问题&#xff0c;不一定会立刻崩&#xff0c;但一旦积累&#xff0c;就是“上线后救不回来的代价”。 稳定性保障不是某个工具的功能&#xff0c;而是一套贯穿开发、测试、上线全流程的“观测分析防范”机制。 …...