本文将业务场景中最常用的几点实例,给大家列举出来,不常见的不再一一赘述。

   使用urllib库可以模拟浏览器发送请求获得服务器返回的数据,下一步就是把有用的数据提取出来。数据分为两种形式:结构化和非结构化。

  非结构化的数据一般指的是文本和HTML。文本的内容特别的杂乱,比如有电话号码,邮箱等信息,只能使用正则表达式进行提取;HTML可以使用CSS选择器,Xpath、正则表达式进行提取。

  结构化的数据一般指的是JSON和XML。JSon可以使用JSonPath处理,也可以转化成python对象。XML可以转化成python对象,或者使用CSS选择器、Xpath、正则表达式进行提取。

  这节主要研究一下正则表达式的使用方法和re模块的常用方法。

--------------------------------------------------------------华丽的分隔符---------------------------------------------------------------------

match():

  从字符串起始位匹配,如果匹配则返回第一个次提取的内容,如果不匹配则返回None。

m没有匹配,n匹配到12,此时的n表示的是一个match对象。
 
-------------------------------------------------------------------------------------------
 

match中可以设置起始位置和结束位置。

 
从零开始计算,3表示第三位开始,5表示第五位结束(不包含第五位字符)。m.group()可以返回match对象中匹配到的值。
 
--------------------------------------------------------------------------------------------
 

compile()中可以设置一些参数,re.I 表示忽略大小写,re.S表示全文匹配

 
m.group()返回匹配内容和m.group(0)一样,m.group(n)表示匹配的内容中分组的单个内容。 
 
----------------------------------------------------------------------------------------------
 

除了group()还有一个方法span(),返回的是字符下标。

 

切记,如果match对象为None时,使用group和span等方法会抛出异常,使用时进行非空判断。

search():

从字符串任意位匹配,如果匹配则返回第一个次提取的内容,如果不匹配则返回None。

 
 

search中可以设置起始位置和结束位置。

 
从零开始计算,3表示第三位开始,5表示第五位结束(不包含第五位字符)。

findall():

从字符串任意位匹配,如果匹配则返回所有提取的内容,如果不匹配则返回[]。

 
 

findall中可以设置起始位置和结束位置。

 
 

finditer():

从字符串任意位匹配,如果匹配则返回所有提取的内容组成的迭代对象,如果不匹配也返回一个迭代对象。

 
 

finditer中可以设置起始位置和结束位置。

 

finditer返回的迭代对象可以理解为match对象的集合,通过for遍历的方式,可以获取match,group方法可以获取匹配的值。

split():

从字符串任意位匹配,如果匹配,则以匹配的内容为分割点,返回切分后的list数据。

 
分割点为{空格 数字 \ ;}的顺序形式,有序
------------------------------------------------------------------------------------------
 
分割点为{空格 数字 \ ;}的各种组合形式,无序
-----------------------------------------------------------------------------------------
 

sub():

从字符串任意位匹配,如果匹配,则替换匹配的内容,返回替换后的字符串。

 
 

从字符串任意位匹配,如果匹配,则交换匹配的内容的位置,返回处理后的字符串。

 

作者:爱折腾的胖子
链接:https://www.jianshu.com/p/6b443c37ed5d
來源:简书

爬虫之re数据提取的使用的更多相关文章

  1. python 爬虫与数据可视化--数据提取与存储

    一.爬虫的定义.爬虫的分类(通用爬虫.聚焦爬虫).爬虫应用场景.爬虫工作原理(最后会发一个完整爬虫代码) 二.http.https的介绍.url的形式.请求方法.响应状态码 url的形式: 请求头: ...

  2. python爬虫的页面数据解析和提取/xpath/bs4/jsonpath/正则(1)

    一.数据类型及解析方式 一般来讲对我们而言,需要抓取的是某个网站或者某个应用的内容,提取有用的价值.内容一般分为两部分,非结构化的数据 和 结构化的数据. 非结构化数据:先有数据,再有结构, 结构化数 ...

  3. Python爬虫教程-18-页面解析和数据提取

    本篇针对的数据是已经存在在页面上的数据,不包括动态生成的数据,今天是对HTML中提取对我们有用的数据,去除无用的数据 Python爬虫教程-18-页面解析和数据提取 结构化数据:先有的结构,再谈数据 ...

  4. Python爬虫10-页面解析数据提取思路方法与简单正则应用

    GitHub代码练习地址:正则1:https://github.com/Neo-ML/PythonPractice/blob/master/SpiderPrac15_RE1.py 正则2:match. ...

  5. Python——爬虫——数据提取

    一.XML数据提取 (1)定义:XML指可扩展标记语言.标记语言,标签需要我们自行定义 (2)设计宗旨:是传输数据,而非显示数据,具有自我描述性 (3)节点关系:   父:每个元素及属性都有一个父. ...

  6. 爬虫数据提取之JSON与JsonPATH

    数据提取之JSON与JsonPATH JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,它使得人们很容易的进行阅读和编写.同时也方便了机器进行解析和生成.适 ...

  7. python爬虫数据提取之bs4的使用方法

    Beautiful Soup的使用 1.下载 pip install bs4 pip install lxml # 解析器 官方推荐 2.引用方法 from bs4 import BeautifulS ...

  8. python爬虫(一)_爬虫原理和数据抓取

    本篇将开始介绍Python原理,更多内容请参考:Python学习指南 为什么要做爬虫 著名的革命家.思想家.政治家.战略家.社会改革的主要领导人物马云曾经在2015年提到由IT转到DT,何谓DT,DT ...

  9. 05.Python网络爬虫之三种数据解析方式

    引入 回顾requests实现数据爬取的流程 指定url 基于requests模块发起请求 获取响应对象中的数据 进行持久化存储 其实,在上述流程中还需要较为重要的一步,就是在持久化存储之前需要进行指 ...

随机推荐

  1. 简析 __init__、__new__、__call__ 方法

    简析 __init__.__new__.__call__ 方法 任何事物都有一个从创建,被使用,再到消亡的过程,在程序语言面向对象编程模型中,对象也有相似的命运:创建.初始化.使 用.垃圾回收,不同的 ...

  2. ECharts常用设置记录

    一.配置文档 http://echarts.baidu.com/option.html#title 二.属性配置 1.图表与边框容器距离. grid: { top: '10%', left: '70' ...

  3. 12-Python操作json

    1.概述 Python操作json文件在测试中会经常用到,那么python怎么操作json文件呢,今天就来简单了解一下.Python中提供了dumps.dump.loads.load,用于字符串 和 ...

  4. Android-MySQLiteOpenHelper的理解

    MySQLiteOpenHelper: package com.esandinfo; import android.content.Context; import android.database.s ...

  5. JAVA RSA加密AES加密

    RSA加密: import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; import javax.crypto.Cipher; imp ...

  6. 【2016年终大典】i春秋一年中不可错过的安全精华

    这是一个24小时不下课的安全技术大学堂, 每分钟250条学习状态发布, 每天迎接3万求知若渴的用户, 最高同时在线人数超过2万人: 这是一个知识分享的聚宝盆, 安全技术课程208门.2138节.427 ...

  7. Kali学习笔记22:缓冲区溢出漏洞利用实验

    实验机器: Kali虚拟机一台(192.168.163.133) Windows XP虚拟机一台(192.168.163.130) 如何用Kali虚拟机一步一步“黑掉”这个windowsXP虚拟机呢? ...

  8. SpringBoot集成Thymeleaf模板引擎

    简单介绍 目前在JavaEE领域有几中比较常用的模板引擎,分别是Jsp.Velocity.Freemarker.Thymeleaf,对Freemark语法不是特别熟悉,不过对于前端页面渲染效率来说,j ...

  9. jQuery之animate()用法

    最近在学习jQuery,看到一个很有意思的函数animate(),但是在网上却没有查到相关的详细资料,于是打算参考jQuery API,自己总结一下. 概述 animate() 方法执行 CSS 属性 ...

  10. 使用freemarker生成xml模板

    今天在java交流群里有个人问我如何用freemarker生成xml模板文件,可以手动配置参数,于是我到网上百度了一下.发现有一位同行的博文写的很nice,于是我就照着他的代码敲了一遍,最后实现了,本 ...