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

爬虫技术之正则提取静态页面数据

第一天

简单示例

在爬虫过程中,我们获取到了页面之后,通常需要做的就是解析数据,将数据持久化到数据库为我所用。如何又快又准确得提取有效数据?这是一门技术,看了我的博客之前可能略有难度,但各位大师看了我的博客之后,那只能说解析页面就像砍瓜切菜,喝水吃饭一般简单。

废话不说,直接搞示例,请看下面这个页面源码:

<tr><th>性別:</th><td>男</td></tr><tr>

来来来,写个python代码提取性别?
分析一下,这不就是td标签内的数据嘛?写一个正则,提取<td>男</td> 中间的中文。
正则得这么写,开头是<td>中间是要提取的内容,使用()括起来,不管中间是啥,()内就写.*?
最后以</td>结尾,想法是可以搞定的,上代码试试。
看代码:

# coding=utf-8import re
html_string = '''<tr><th>性別:</th><td>男</td></tr><tr>'''
regex = r'<td>(.*?)</td>'result = re.findall(regex,html_string)
print(result)

这个代码跑起来看看是牛还是马喽==>
在这里插入图片描述
果然是牛,🐂🐂🐂!
是不是感觉自己又行了,就是这么简单,后面慢慢试试复杂点页面,但都是解析方法从这个代码升级的,就是白开水,一眼望到底呀!

今天懒得写了,我得去钓鱼了。已经空军16天,今天必须破龟,明天来继续搞代码。

第二天

贪婪与非贪婪模式

空军回来,又是新的一天,我们继续搞!
这里我们需要了解两种正则的匹配模式【贪婪模式鱼非贪婪模式】,主要掌握非贪婪模式,就能搞定市面上大部分页面解析需求,666!
看一眼贪婪模式,虽然不常用,但可能哪个面试狗(我从来不把面试官当人,因为我遇到的都很狗,🐕🐕🐕)问,傻冒!

贪婪模式尽可能多地匹配所指定的字符。
在正则表达式中,默认情况下,大多数重复字符都是贪婪的,即它们尝试尽可能多次地匹配。
例如,.*将匹配尽可能长的字符串,即匹配到整个字符串,而不是仅仅匹配到第一个出现的子字符串。

以下熟读并背诵,这个很重要!!!

非贪婪模式尽可能少地匹配所指定的字符。
非贪婪模式通常通过在重复字符后面加上一个?来实现。
例如,.*?将匹配尽可能短的字符串,即匹配到第一个出现的子字符串。

我来找个字符串,搞个代码理解理解,不然说得太干!
字符串 “foobazquux”,我们想匹配两个尖括号< >之间的内容:
上代码瞧瞧:

# coding=utf-8import re# 原始字符串
text = "foo<bar>baz<qux>quux"# 贪婪模式
greedy_pattern = re.compile(r'<.*>')
# 创建了一个正则表达式对象,使用了贪婪模式,模式是 <.*>,表示匹配尖括号<和>之间的任意字符(包括零个字符或多个字符)。
greedy_match = greedy_pattern.search(text)
# 使用 search() 方法在给定的文本字符串 text 中搜索与正则表达式 greedy_pattern 匹配的第一个子串。
print("贪婪模式匹配结果:", greedy_match.group())
# 使用 group() 方法返回与正则表达式模式匹配的文本。# 非贪婪模式
non_greedy_pattern = re.compile(r'<.*?>')
non_greedy_match = non_greedy_pattern.search(text)
print("非贪婪模式匹配结果:", non_greedy_match.group())

看看代码的运行结果,是牛还是马。
在这里插入图片描述
小小牛马,简单简单。

了解了贪婪模式与非贪婪模式,我们基本上就可以搞定大部分的网页解析了,念在是初学者,又名菜鸡,还是多搞点案例来给大家修炼一下,顺便给大家一个匹配代码模板,以后只需要修改正则表达式即可,看完请说我牛b🐂🐂🐂

练习一

打开链接点我
,将电影名称,上映时间,评分采集并保存。
主要采集这三个数据
在这里插入图片描述
我们先来搞定标题的正则采集,标题长在这个里面,结果就下面这个b样
在这里插入图片描述

相关文章:

爬虫技术之正则提取静态页面数据

第一天 简单示例 在爬虫过程中&#xff0c;我们获取到了页面之后&#xff0c;通常需要做的就是解析数据&#xff0c;将数据持久化到数据库为我所用。如何又快又准确得提取有效数据&#xff1f;这是一门技术&#xff0c;看了我的博客之前可能略有难度&#xff0c;但各位大师看…...

字符串匹配算法:暴力匹配、KMP 算法、Boyer-Moore 算法、Rabin-Karp 算法

字符串匹配算法 字符串匹配算法是在一个字符串&#xff08;称为文本&#xff09;中查找另一个字符串&#xff08;称为模式&#xff09;出现的位置或者是否存在的算法。常见的字符串匹配算法包括暴力匹配、KMP算法、Boyer-Moore算法和Rabin-Karp算法。下面是对这些算法的简要介…...

微信小程序接入百度地图(微信小程序插件)使用文档

第一步配置域名 :在微信公众平台登录后配置服务域名称:https://apis.map.qq.com 第二步申请密钥 申请开发者密钥申请地址 第三步使用插件 选择添加插件 搜索腾讯位置服务地图选点 选择要授权的小程序 授权完毕会在这里显示插件信息 第四步查看使用文档 跳转至文…...

如果需要在Log4j中记录特定的异常信息,应该如何实现?如何动态地更改Log4j的日志级别?

如果需要在Log4j中记录特定的异常信息&#xff0c;应该如何实现&#xff1f; 在Log4j中记录特定的异常信息&#xff0c;你可以使用Logger类的error、warn、info等方法&#xff0c;这些方法通常接受一个字符串消息和一个Throwable对象&#xff08;如异常&#xff09;作为参数。下…...

Rust入门:C++和Rust动态库(dll)的相互调用

无论是C调用Rust动态库还是Rust调用C动态库&#xff0c;其操作基本都是一样地简单&#xff0c;基本和C调用C的动态库没什么区别&#xff0c;只需要列出所需要导入的函数&#xff0c;并链接到相应的lib文件即可。 这里&#xff0c;在windows中&#xff0c;我们以dll动态库为例说…...

第三篇【传奇开心果系列】Python的自动化办公库技术点案例示例:深度解读Pandas股票市场数据分析

传奇开心果博文系列 系列博文目录Python的自动化办公库技术点案例示例系列 博文目录前言一、Pandas进行股票市场数据分析常见步骤和示例代码1. 加载数据2. 数据清洗和准备3. 分析股票价格和交易量4. 财务数据分析 二、扩展思路介绍1. 技术指标分析2. 波动性分析3. 相关性分析4.…...

3.11笔记2

目前使用的格里高利历闰年的规则如下&#xff1a; 公元年分非4的倍数&#xff0c;为平年。公元年分为4的倍数但非100的倍数&#xff0c;为闰年。公元年分为100的倍数但非400的倍数&#xff0c;为平年。公元年分为400的倍数为闰年。 请用一个表达式 (不能添加括号) 判断某一年…...

web服务器基础

目录 web服务器简介 (1)什么是www (2)网址及HTTP简介 (3)http协议请求的工作流程 主配置文件内的参数 目录标签 缺点 虚拟主机vhosts 示例的格式如下 实例 多IP实现多网页 修改监听端口号 hosts文件及域名解析 修改hosts文件内缓存格式 实现效果 实现多域名解析IP地址 在linux…...

矢量图片转换软件Vector Magic mac中文版功能特色

Vector Magic mac中文版是一款非常流行的矢量图片转换软件&#xff0c;它的功能特色主要体现在以下几个方面&#xff1a; 首先&#xff0c;Vector Magic mac中文版拥有出色的矢量转换能力。它采用世界上最好的全彩色自动描摹器&#xff0c;能够将JPG、PNG、BMP和GIF等位图图像…...

Window部署Oracle并实现公网环境远程访问本地数据库

文章目录 前言1. 数据库搭建2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射 3. 公网远程访问4. 配置固定TCP端口地址4.1 保留一个固定的公网TCP端口地址4.2 配置固定公网TCP端口地址4.3 测试使用固定TCP端口地址远程Oracle 前言 Oracle&#xff0c;是甲骨文公司的一款关系…...

灵魂指针,教给(三)

欢迎来到白刘的领域 Miracle_86.-CSDN博客 系列专栏 C语言知识 先赞后看&#xff0c;已成习惯 创作不易&#xff0c;多多支持&#xff01; 目录 一、 字符指针变量 二、数组指针变量 2.1 数组指针变量是什么 2.2 数组指针变量如何初始化 三、二维数组传参本质 四、函数…...

纯手工搭建一个springboot maven项目

前言&#xff1a;idea社区版无法自动搭建项目&#xff0c;手动搭建的经验分享如下&#xff1a; 1 包结构 参考下图&#xff1a; 2 项目结构 3 maven依赖 具体的项目包结构如下图&#xff1a; 依据这个项目包结构配置一个springboot 的 pom依赖&#xff1a; <?xml ve…...

【Java】使用`LinkedList`类来实现一个队列,并通过继承`AbstractQueue`或者实现`Queue`接口来实现自定义队列

使用LinkedList类来实现一个队列&#xff0c;并通过继承AbstractQueue或者实现Queue接口来实现自定义队列。 以下是一个简单的示例&#xff0c;其中队列的大小与另一个List的容量保持一致&#xff1a; import java.util.LinkedList; import java.util.List; import java.util…...

ChatGPT消息发不出去了?我找到解决方案了

现象 今天忽然发现 ChatGPT无法发送消息&#xff0c;能查看历史对话&#xff0c;但是无法发送消息。 猜测原因 出现这个问题的各位&#xff0c;应该都是点击登录后顶部弹窗邀请[加入多语言 alapha 测试]了&#xff0c;并且语言选择了中文&#xff0c;抓包看到ab.chatgpt.com…...

《量子计算:下一个大风口,还是一个热炒概念?》

引言 量子计算,作为一项颠覆性的技术,一直以来备受关注。它被认为是未来计算领域的一次革命,可能改变我们对计算能力和数据处理的理解。然而,随着技术的不断进步和商业应用的探索,人们开始思考,量子计算到底是一个即将到来的大风口,还是一个被过度炒作的概念? 量子计…...

在Ubuntu中如何基于conda安装jupyterlab

在Ubuntu中如何创建ipykernel 可以用下面命令完成 conda create -n newenv python3.8conda activate enwenvconda install ipykernel5.1.4conda install ipython_genutilsipython -m ipykernel install --user --namepython3 --display-name Python3conda install -c conda-fo…...

Unity 中的 PlayFab 入门

要开始在 Unity 中使用 PlayFab,你只需执行以下两个简单步骤即可。第一步是设置 PlayFab 帐户。第二步是通过安装 Unity 编辑器扩展将其连接到 Unity。或者,你也可以下载 PlayFab SDK 并在没有扩展的情况下进行配置。 设置你的 PlayFab 帐户 访问 PlayFab 的网站并创建你的…...

常见排序算法(C++)

评判一个排序算法时除了时间复杂度和空间复杂度之外还要考虑对cache的捕获效果如何&#xff0c;cache友好的排序算法应该对数据的访问相对集中&#xff0c;快速排序相较于堆排序优点就是在于对cache的捕获效果好。 堆排序 时间复杂度&#xff1a;O&#xff08;n log n &#xf…...

多线程编程互斥锁mutex的创建

在Linux下的多线程编程中&#xff0c;互斥锁&#xff08;mutex&#xff09;的创建主要有两种方式&#xff1a;静态分配和动态分配。这两种方式的主要区别在于互斥锁的生命周期和初始化方式。 静态分配&#xff08;静态方式&#xff09; 静态分配方式是在程序编译时就已经确定互…...

在 SpringBoot3 中使用 Mybatis-Plus 报错

在 SpringBoot3 中使用 Mybatis-Plus 报错 Property ‘sqlSessionFactory’ or ‘sqlSessionTemplate’ are required Caused by: java.lang.IllegalArgumentException: Property sqlSessionFactory or sqlSessionTemplate are requiredat org.springframework.util.Assert.no…...

第三幕 御酒掺土,江山为祭

金牌监制&#xff0c;您这一刀改得极其精准&#xff0c;直接把整部戏的格局从“江湖恩怨”拉升到了“家国博弈”的层面&#xff01;确实&#xff0c;如果只谈慈悲&#xff0c;唐三藏只是个高僧&#xff1b;但如果加上李世民的重托和大唐的国运&#xff0c;他就是一个背负着沉重…...

AArch64内存管理:MAIR_EL3寄存器详解与应用

1. AArch64内存管理基础与MAIR_EL3寄存器定位 在Armv8-A/v9-A架构中&#xff0c;内存管理单元(MMU)通过多级页表实现虚拟地址到物理地址的转换。当处理器执行内存访问时&#xff0c;MMU会遍历页表条目(Translation Table Entry)&#xff0c;其中包含两个关键信息&#xff1a;目…...

2026年,本地精准营销高性价比服务商来袭,你还不了解一下?

在本地商业竞争日益激烈的2026年&#xff0c;实体店面临着诸多挑战&#xff0c;引流难、成本高、复购率低等问题困扰着众多商家。而中粤&#xff08;广州&#xff09;信息科技有限公司作为本地精准营销的高性价比服务商&#xff0c;正以其独特的优势和卓越的服务&#xff0c;为…...

Midjourney锐化效果失效真相(2024官方未公开的渲染管线瓶颈解析)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Midjourney锐化效果失效真相&#xff08;2024官方未公开的渲染管线瓶颈解析&#xff09; 自2024年V6.2版本起&#xff0c;大量用户反馈 --stylize 与 --sharp 参数组合下图像边缘锐化效果显著弱化&am…...

Windows10下V-REP教育版安装保姆级教程(附百度网盘资源与避坑点)

Windows10系统V-REP教育版完整安装指南&#xff1a;从下载到实战避坑在机器人仿真和自动化控制领域&#xff0c;V-REP&#xff08;现更名为CoppeliaSim&#xff09;作为一款功能强大的跨平台机器人仿真软件&#xff0c;已经成为众多工科学生和研究人员的首选工具。特别是其教育…...

ssm207基于SSM的视频播放系统的设计与实现+vue(文档+源码)_kaic

第五章 系统的实现5.1 用户功能模块的实现5.1.1系统主界面用户进入本系统可查看系统信息&#xff0c;系统主界面展示如图5.1所示。图5.1网站主界面5.1.2视频详情界面用户可选择视频查看视频详情信息&#xff0c;并可进行视频播放操作&#xff0c;视频详情界面展示如图5.2所示。…...

三步让小爱音箱秒变AI语音助手:MiGPT深度配置指南

三步让小爱音箱秒变AI语音助手&#xff1a;MiGPT深度配置指南 【免费下载链接】mi-gpt &#x1f3e0; 将小爱音箱接入 ChatGPT 和豆包&#xff0c;改造成你的专属语音助手。 项目地址: https://gitcode.com/GitHub_Trending/mi/mi-gpt 还在为小爱音箱的"人工智障&q…...

基于Arduino与蓝牙模块的六路无线开关控制系统设计与实现

1. 项目概述&#xff1a;用手机蓝牙控制六路LED想不想把手机变成一个无线遥控器&#xff0c;随手一点就能开关家里的灯带、氛围灯&#xff0c;甚至是其他电器&#xff1f;这个项目就是为你准备的。它基于一块功能增强的Arduino兼容板——GlowDuino Uno&#xff0c;配合一个极其…...

告别KITTI!用TartanAir数据集在Unreal Engine+AirSim里复现那些让VSLAM算法“翻车”的雨天和黑夜

超越KITTI&#xff1a;用TartanAir数据集在虚拟极端环境中锤炼VSLAM算法当视觉SLAM算法在KITTI数据集上取得95%的准确率时&#xff0c;开发者们常常会松一口气——直到这些算法被部署到真实世界的雨夜街道上。突然之间&#xff0c;那些在阳光明媚的德国道路上表现优异的特征点检…...

Awoo Installer:让Switch游戏安装变得简单高效的终极解决方案

Awoo Installer&#xff1a;让Switch游戏安装变得简单高效的终极解决方案 【免费下载链接】Awoo-Installer A No-Bullshit NSP, NSZ, XCI, and XCZ Installer for Nintendo Switch 项目地址: https://gitcode.com/gh_mirrors/aw/Awoo-Installer 厌倦了繁琐的Switch游戏安…...