爬虫笔记3


一、数据解析概述

通俗来讲,数据解析就是从你爬取到的网页里提取自己想要的信息或数据。

二、数据解析分类

re解析
bs4解析
xpath解析

三、正则表达式

1.什么是正则表达式

一种使用表达式的方式对字符串进行匹配的语法规则。 抓取到的网页源代码本质上就是一个超长的字符串,想从里面提取内容,用正则再合适不过了。

2.正则优缺点

优点缺点
速度快,效率高,准确性高新手上手难度有点高

正则的语法:使用元字符进行排列组合用来匹配字符串。


3.元字符

元字符:具有固定含义的特殊符号。

元字符作用
“.”匹配除换行符以外的任何字符
“\w”匹配字母或数字或下划线
“\s”匹配任意的空字符
“\d”匹配数字
“\n”匹配一个换行符
“\t”匹配一个制表符
[…]匹配字符组中的字符 在中括号里面a-z表示a到z而不表示减号
[^···]匹配除字符组中的字符

4.量词

控制元字符出现的次数(加在元字符的后面)

量词作用
*重复0次或更多次
+重复一次或更多次
?重复0次或1次(出现或者不出现)
{n}重复n次
{n,}重复n次或更多次
{n,m}重复n到m次

5.贪婪匹配和惰性匹配

推荐正则表达式在线测试网站:
https://tool.oschina.net/regex

类别说明
.*?对于匹配结果多的情况,优先匹配最短的那个
.*贪婪匹配,与上述相反

在这里插入图片描述
在这里插入图片描述

四.re模块

import re

代码如下(示例):

import re

1. findall

匹配字符串中所有的符合正则的内容

lst = re.findall(r"\d+","我的电话号是:10086,我女朋友电话是:10010")
print(lst)
lst2 = re.findall(r"我的.*号是","我的电话号是:10086,我女朋友电话号是:10010")
print(lst2)

结果为:
在这里插入图片描述

2. finditer

:匹配字符串中所有的内容【返回的是迭代器】,从迭代器中用group获得所取内容
在这里插入图片描述

运行结果为:
在这里插入图片描述

3. search

找到一个结果就返回的结果是match对象,拿数据需要.group()

s = re.search(r"\d+","我的电话号是:10086,我女朋友电话是:10010")
print(s.group())

4. match

从头开始匹配,也就是说一开始不匹配就报错

r = re.match(r"\d+","我的电话号是:10086,我女朋友电话是:10010")
print(r.group())

结果为:
在这里插入图片描述

r1 = re.match(r"\d+","10086,我女朋友电话是:10010")
print(r1.group())

才能运行出结果:
在这里插入图片描述

5. 预加载正则表达式

直接代码解释:

obj = re.compile(r"\d+")
ret = obj.finditer("我的电话号是:10086,我女朋友电话是:10010")
for it in ret:
    print(it.group())

6. 正则中的内容如何单独提取

import re
a = """
<div class='jay'><span id='1'>郭麒麟</span></div>
<div class='jj'><span id='2'>宋轶</span></div>
<div class='jolin'><span id='3'>大聪明</span></div>
<div class='sylar'><span id='4'>范思哲</span></div>
<div class='tory'><span id='5'>胡说八道</span></div>
"""
#(?P<分组名字>)
obj0 = re.compile(r"<div class='.*?'><span id='\d+'>(?P<name>.*?)</span></div>",re.S)
result = obj0.finditer(a)

for its in result:
    print(its.group("name"))

运行结果为:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值