推广 热搜: csgo  vue  2023  angelababy  gps  信用卡  新车  htc  落地  控制 

【技术推文】Python爬虫原理与常用模块——数据提取与清洗策略(必须收藏)

   2023-08-30 网络整理佚名2190
核心提示:假如我们希望只提取出关注的数据,此时可以通过一些表达式进行提取,正则表达式就是其中一种进行数据筛选的表达式。sub还允许使用函数对匹配项的替换进行复杂的处理。可用来在XML文档中对元素和属性进行遍历。是一种轻量级的数据交换格式,易于人阅读和编写。用于把类型的数据转化成json类型的字符串,并保存到本地文件中。用于读取本地的json数据并转换成对象.

1 正则表达式

1.1 概念

世界上的信息很多,但我们关注的信息却是有限的。 如果我们只想提取我们关心的数据,我们可以使用一些表达式来提取它。 正则表达式是数据过滤的表达式之一。

正则表达式 ( ) 是一种文本模式,包括普通字符(例如 a 和 z 之间的字母)和特殊字符(称为“元字符”)。

正则表达式通常用于匹配、检索、替换和分割与某种模式(规则)匹配的文本

从1.5版本开始添加了re模块,它提供了Perl风格的正则表达式模式。

re模块使语言具备了所有的正则表达式功能,使用前需要使用re导入该模块

1.2 原子

1.2.1 概念

原子是正则表达式中最基本的单位,每个正则表达式至少包含一个原子。

常见的原子类型有:

普通字符作为原子如:abc字母

作为原子的非打印字符,例如:\n\t

作为原子的通用字符,例如: \d \D \w \W \s \S

原子表如:多个原子拼接在一起

1.2.2 非打印字符

1.2.3 通用字符

1.3 元字符

1.3.1 概念

所谓元字符就是正则表达式中具有一些特殊含义的字符,比如重复前一个字符N次。

1.3.2 常用元字符

1.3.3 示例

1.4 模式修改器

1.4.1 概念

所谓模式修饰符是指在不改变正则表达式的情况下,可以通过模式修饰符改变正则表达式

公式的含义,从而实现一些匹配结果的调整等功能。

1.4.2 常用修饰符

1.5 贪婪模式和懒惰模式

1.5.1 概念

贪婪匹配会抓取满足匹配的最长字符串,这也是正则表达式的默认模式。 当我们不需要最长匹配时,使用惰性模式。

1.5.2 匹配元字符个数

1.5.3 模式表达式

1.5.4 示例

1.6 常用功能

1.6.1 ()

1.6.1.1 概念

从包含正则表达式的字符串创建模式对象。允许更有效的匹配

1.6.1.2 格式

详细参数:

:编译时使用的表达式字符串。

flags:编译标志,用于修改正则表达式的匹配方式,如:re.I(不区分大小写)、re.S等。

1.6.1.3 代码示例

1.6.2 匹配()

1.6.2.1 概念

尝试从字符串的开头进行匹配。 如果匹配不在开头,则 match() 不返回任何内容。

注意:此方法并不完全匹配。 如果最后还有剩余字符,仍然认为成功。

1.6.2.2 格式

详细参数:

:编译时使用的表达式字符串。

flags:编译标志,用于修改正则表达式的匹配方式,如:re.I(不区分大小写)、re.S等。

1.6.2.3 代码示例

1.6.3.1 概念

扫描整个字符串,并返回第一个成功的匹配项。 如果匹配失败则返回 None。

1.6.3.2 格式

回复。(,[,标志=0])

1.6.3.3 代码示例

关于

一个=“”

print(re.("([0-9]*)([az]*)([0-9]*)", a).group(0)) #,返回整体

print(re.("([0-9]*)([az]*)([0-9]*)", a).group(1)) #123

print(re.("([0-9]*)([az]*)([0-9]*)",a).group(2)) #abc

print(re.("([0-9]*)([az]*)([0-9]*)",a).group(3)) #456 ###group(1) 列出第一个其中一个括号匹配部分,group(2)列出第二个括号匹配部分,group(3)列出第三个括号匹配部分。

1.6.4 比赛与比赛的异同

match,一旦匹配成功,就是一个match对象,match对象有以下方法:

2.re.match只匹配字符串的开头。 如果字符串开头与正则表达式不匹配,则匹配失败,函数返回None;

3. 回复。 匹配整个字符串,直到找到匹配项。

代码示例:

1.6.5 ()

1.6.5.1 概念

遍历match,可以得到字符串中所有匹配到的字符串,并返回一个列表。

1.6.5.2 格式

回复。(,[,标志=0])

1.6.5.3 代码示例

1.6.6 分割()

1.6.6.1 概念

根据可以匹配的子串进行划分,返回到列表中。

可以使用re.split来分割字符串,如:re.split(r'\s+',text); 用空格将字符串拆分为单词列表。

1.6.6.2 格式

1. 回复。 分裂(, [, ])

详细参数解释::用于指定最大分割数,如果不指定则执行所有分割。

1.6.6.3 代码示例

1.print(re.split('\d+','ive5'))

2.# 执行结果如下: # ['一', '二', '三', '四', '五', '']

1.6.7sub()

1.6.7.1 概念

使用 re 替换每个匹配的子字符串并返回替换后的字符串。

1.6.7.2 格式

1. 回复。 分裂(, [, ])

详细参数解释::用于指定最大分割数,如果不指定则执行所有分割。

代码示例:

1. 重新

2.text =“JGood是个男孩,他很酷,等等……”

3.print(re.sub(r'\\s+', '-', 文本))

4.#执行结果如下:JGood-is-a--boy,-he-is-cool,-,-and-so-on...

5.# 其中第二个函数是替换后的字符串; 在这种情况下 '-'

6.#第四个参数指的是替换的次数。 默认为 0,表示每个匹配项都会被替换。 re.sub 还允许使用函数对匹配替换进行复杂的处理。 如:re.sub(r'\\s', m: '[' + m.group(0) + ']', text, 0); 将字符串中的空格“”替换为“[]”。

1.6.7.3 代码示例

1. 重新

2.text =“JGood是个男孩,他很酷,等等……”

3.print(re.sub(r'\\s+', m:'['+m.group(0)+']', 文本,0))

4.#执行结果如下:JGood[ ]is[ ]a[ ][ ]boy,[ ]he[ ]is[ ]cool,[ ],[ ]and[ ]so[ ]on... |

2 xpath解析库

2.1 概念

XPath(XML 路径)是一种用于在 XML 文档中查找信息的语言。

XPath 可用于遍历 XML 文档中的元素和属性。

XPath 是 W3C XSLT 标准的主要元素,两者都是基于 XPath 表达式构建的。

如何在以下位置安装和使用 XPath:

①:安装lxml库。

②:来自lxml etree

③:=etree.HTML(网页源代码)

④:.xpath(魔法符号)

使用etree处理html文本会自动补全不完整或缺失的html部分的代码

2.2 准备工作

要使用XPath,必须首先安装lxml库:pip lxml

配置 XPath 插件

注:如果安装包无效,解决方法如下:

1> 将以crx结尾的扩展包后缀更改为rar格式的压缩包文件,直接确认。

2> 解压压缩包,然后更改下路径

3> 进入浏览器加载扩展界面,打开开发者模式,点击“加载解压后的扩展”,进入解压后的文件夹直接安装。

4> 有些可能没有“加载已解压的扩展”选项,可以通过选择“打开开发者选项”来显示。

2.3 节点选择规则

2.4 代码示例

3

3.1 概念

JSON() 是一种轻量级数据交换格式,易于人类阅读和编写。

3.2—Json数据对比

3.3 常用方法

使用json相关功能需要导入Json库。 导入方式:json

3.3.1 json.dumps

3.3.1.1 概念

用于将对象编码为 JSON 字符串。

3.3.1.2 示例

1.json

2.a = {'姓名':'王','年龄':29}

3.b=json. 转储(一)

4.print (b, type(b)) #上述代码执行结果为:{"age": 29, "name": "wang"}

3.3.2.json. 负载

3.3.2.1 概念

用于解码 JSON 数据。 该函数返回字段的数据类型。

3.3.2.2 示例

1.json

2. = '{"a":1,"b":2,"c":3,"d":4,"e":5}'

3. 文本=json。 负载()

4.打印文字

5.

6.# 上述代码的执行结果为:

7. {u'a': 1, u'c': 3, u'b': 2, u'e': 5, u'd': 4}

3.3.3 json.dump

3.3.3.1 概念

用于将数据类型转换为json类型的字符串并保存到本地文件中。

3.3.3.2 示例

1.json

2.=[{'':'name1','vip':True,},{'':无,'vip':False,}]

3.

4.# dump 将数据类型转换为json类型的字符串并保存到本地文件中

5.json.dump(,open('json.txt','w'))

6.

7.#上述代码的执行结果为:

8.#生成一个json.txt文件,该文件的文本内容为:

9. [{"": "name1", "vip": true}, {"": null, "vip": false}]

3.3.4 json.load

3.3.4.1 概念

json.dump 用于读取本地json数据并将其转换为对象。

3.3.4.2 示例

1.#json.txt数据:[{"": "name1", "vip": true}, {"": null, "vip": false}]

2.

3.#代码:

4.=json.load(open('json.txt'))

5. 打印()

6.

7.#上述代码运行结果:

8. [{'': 'name1', 'vip': True}, {'': None, 'vip': False}]

——————————————

版权声明:本文为CSDN博主“柏拉图工作室-纪律”原创文章

原文链接:

、语言课程概述:(点击会议标题了解课程更多信息)

【于蕾老师精品课程】:机器学习技术及案例实际应用

点击课程概览

课程背景

课程采用“理论讲解+实际案例+动手操作+讨论互动”的结合方式,深入浅出地讲解分析模型在实践中的应用,使技术人员快速提高分析模型的应用能力。软件并掌握其理论基础和实际操作。

 
反对 0举报 0 收藏 0 打赏 0评论 0
 
更多>同类资讯
推荐图文
推荐资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报
Powered By DESTOON