栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python爬虫运用Re方法解析数据入门实例

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python爬虫运用Re方法解析数据入门实例

前言:

        在学习爬虫的时候,除了要学会爬取数据以外,还要学习如何解析数据,在这里介绍常用的三种解析爬虫数据的方法,分别是正则表达式、Beautiful Soup、还有xpath。

正文:

        首先分别介绍三种解析数据方式各自的特点:

        Re(Regular expression 正则表达式)速度快效率高准确性高,但使用起来可能相较于其他两种方法会更加的复杂多变,要学习的一些符号规则也会多一点。   

        bs4(Beautiful Soup)最简单但执行起来效率并不高,它的原理是通过对HTML的标签、属性以及属性值来进行定位的。

        xpath最流行,语法规则比较舒服,使用起来效率更高更容易上手,xpath是在XML文档中搜索内容的一门语言课,也是现在爬虫用的比较多的一种解析数据的方式。

        接下来进入到这三种方式当中Re的实例:

        其中Re的常用的符号规则:

元字符:具有固定含义的特殊符号
常用元字符:
1   .      匹配除换行符以外的任意字符
2   w     匹配字母或数字或下划线
3   s     匹配任意的空白符
4   d     匹配数字
5   n     匹配一个换行符
6   t     匹配一个制表符
7   ^      匹配字符串的开始
8   $      匹配字符串的结尾
9   W     匹配非字母或数字或下划线
10  D     匹配非数字
11  S     匹配非空白符
12  a|b    匹配字符a或b
13  ()     匹配括号内的表达式,也表示一个组
14  [...]    匹配字符串中的字符
15  [^...]       匹配除了字符组中字符的所有字符

量词:控制前面的元字符出现的次数
*  重复零次或更多次
+  重复一次或更多次
? 重复零次或一次
{n}    重复n次
{n,}   重复n次或更多次
{n,m}  重复n次到m次

贪婪匹配和惰性匹配

.*     贪婪匹配
.*?    惰性匹配

import re

# findall: 匹配字符串中所有符合正则的内容,返回的是列表,因为列表效率并不高所以一般不用findall
lst = re.findall(r"d+","我的电话是: 13267584321, 门牌号:432")
print(lst)

# finditer: 匹配字符串中所有的内容【返回的是迭代器】,从迭代器中拿到内容需要.group()
it = re.finditer(r"d+","我的电话是: 13267584321, 门牌号:432")
for i in it:
    print(i.group())

# search全文搜索找到一个结果就返回,返回的结果是match对象,拿数据需要.group()
s = re.search(r"d+","我的电话是: 13267584321, 门牌号:432")
print(s.group())

# match从头开始匹配
m = re.match(r"d+","13267584321, 门牌号:432")
print(s.group())

#预加载正则表达式, 美化代码,提高一丢丢的效率
obj = re.compile(r"d+")
ret = obj.finditer("我的电话是: 13267584321, 门牌号:432")
for i in ret:
    print(i.group())

# 三个引号的作用即是所写即所得,不需要用换行符 在单引号里双引号将变成普通符号,反之亦然
s = '''
    林天封
    正向站
    正中行
    郑浩然
'''
#(?P<"分组名字">正则)可以单独从正则匹配内容中进一步提取内容
obj = re.compile(r".*?)'>d+)'>(?P.*?)", re.S) # re.S 表示让.能匹配换行符
result = obj.finditer(s)
for it in result:
    print(it.group("first"),end=" ")
    print(it.group("second"),end=" ")
    print(it.group("third"))
总结:

        这里的实例仅仅是入门而已,还有很多的符号没有涉及到,如果大家要系统地去学习正则表达式,则需要把常用的几种符号给弄清楚,并多做几次实验,也试着从网页HTML代码中提取自己想要的内容,后续将会更新bs4还有xpath的一些简单的实例。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/286164.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号