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

爬虫04——数据解析(一)

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

爬虫04——数据解析(一)

回顾——聚焦爬虫:

爬取页面中指定的页面内容;获得相应的数据信息之后的处理我们就称之为数据解析

         编码流程:

                — 指定url

                — 发起请求

                — 获取响应数据

                — 数据解析

                — 持久化存储

数据解析分类:
        — 正则

        — bs4

        — xpath(通用性较强)

数据解析原理概述:

        — 解析的局部的文本内部都会在标签之间或者标签对应的属性中进行存储。

        — 1. 进行指定标签的定位

        — 2. 标签或者标签对应的属性中存储的数据值进行提取(解析)


1、数据解析——正则

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

re.findall(pattern,string,flags=0)
# 用于返回包含所有匹配项的列表。返回string中所有与pattern相匹配的全部字串,返回形式为数组。
import re

# findall:匹配字符串中所有的符合正则的内容
lst = re.findall("m", "mai le fo len,mai ni mei!") #需要寻找的数,字符串
print(lst)  # ['m', 'm', 'm']
#r是指被r前缀的字符串不进行转义
lst1 = re.findall(r"d+", "5点之前,你要给我5000万")#也可以是需要的正则,字符串
print(lst1)  # ['5', '5000']

#考虑到findall返回到列表效率不高
#finditer: 匹配字符串中所有到内容[返回到是迭代器],从迭代器中拿到内容需要.group()

it=re.finditer(r"d+", "5点之前,你要给我5000万")
for i in it:
    print(i.group())
'''
返回结果:
5
5000
'''

        1.2 search

import re
#search,找到一个结果就返回,返回的结果是match对象,拿数据需要.group()
s = re.search(r"d+","我的电话号是:10086,我女朋友的电话是:10010")
print(s.group())

        1.3 match

# match是从头开始匹配
s = re.match(r"d+","我的电话号是:10086,我女朋友的电话是:10010") #当开头不是数字就会报错
s1 = re.match(r"d+","10086,我女朋友的电话是:10010")
print(s1.group()) #10086
print(s.group()) #报错

        1.4 预加载正则表达式(提前编写正则,方便以后调用,提高效率)

import re
obj = re.compile(r"d+")#存储正则表达式
ret=obj.finditer("我的电话号是:10086,我女朋友的电话是:10010")
for it in ret:
    print(it.group())

        1.4.1 案例:提取指定字符 

import re
s="""
郭麒麟
宋铁
大聪明
范思辙
胡说八道
"""
#提前编写正则表达式
# (?P<自定义组名>.*?)  -》用于自定义的组名提取数据,P要大写
#后面的re.S是为了换行
obj = re.compile(r"(?P.*?)",re.S)
result = obj.finditer(s)
for i in result:
    print(i.group("wahaha"))

【运行结果】

需要id值,也可以给id创建组名

import re
s="""
郭麒麟
宋铁
大聪明
范思辙
胡说八道
"""
obj = re.compile(r".*?)'>(?P.*?)")
result = obj.finditer(s)
for i in result:
    print(i.group("id"))
    print(i.group("wahaha"))


Python 正则表达式 | 菜鸟教程Python 正则表达式 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。Python 自1.5版本起增加了re 模块,它提供 Perl 风格的正则表达式模式。 re 模块使 Python 语言拥有全部的正则表达式功能。 compile 函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象。该对象拥有一系列方法用于正则表达式匹配和替换。 re 模块也提供了与这些方法功能完全一致的函数,这..https://www.runoob.com/python/python-reg-expressions.html#flags

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

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

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