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

   使用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. 服务器windows2008系统登录报错:由于远程桌面服务当前正忙,因此无法完成您尝试的任务。请在...

    1.问题描述:windows server 2008服务器通过远程桌面登录时很慢,登录不进去,把远程桌面关掉后,再用远程桌面登录时,出现下图提示. 把服务器接上显示器键盘鼠标后,卡在系统登录的欢迎界面 ...

  2. ANDROID说说对MENU的理解

    ANDROID%E5%88%9D%E5%AD%A6%E4%B9%8B%E7%AE%80%E6%98%93%E8%AE%A1%E7%AE%97%E5%99%A8 Ѿ�����ڴ����㺰ô�

  3. DataOutputStream and DataInputStream

    1.在io包中,提供了两个与平台无关的数据操作流 数据输出流(DataOutputStream) 数据输入流(DataInputStream) 2.通常数据输出流会按照一定的格式将数据输出,再通过数据 ...

  4. linux redis 多实例安装

    前言: Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件. 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表( ...

  5. ORACLE提交事务回滚

    execute执行后 可以回滚 commit提交后 闪回恢复原来的数据 其实Oracle提交数据是分两步操作的,第一步execute执行,第二步commit提交.对应的PL\SQL也是要先点execu ...

  6. Javascript高级编程学习笔记(70)—— 事件(14)内存和性能

    由于事件处理程序是现代的web程序交互能力的提供者 所以在日常实践中,我们免不了要向页面中添加大量的事件处理程序(不管是用于用户交互还是用于统计用户数据) 在创建GUI(图形用户界面)的语言(如C#) ...

  7. Cannot load php5apache2_4.dll into server

    配置PHP开发环境的时候,当进行到在Apache的httpd.conf文件中配置加载PHP模块时发生如下错误 httpd: Syntax error on line 185 of D:/wamp/Ap ...

  8. Python中parameters与argument区别

    定义(define)一个带parameters的函数: def addition(x,y): return (x+y) 这里的x,y就是parameter 调用addition(3,4) 调用(cal ...

  9. wav转txt格式的代码实现(c,python)

    平时经常做音频算法,经常用得到wav转txt的转换,这里就做个备忘,自己写了一些小代码来实现这个目标: 第一个是c代码的实现: #include <stdio.h> #include &l ...

  10. 深度学习环境配置:Ubuntu16.04安装GTX1080Ti+CUDA9.0+cuDNN7.0完整安装教程(多链接多参考文章)

    本来就对Linux不熟悉,经过几天惨痛的教训,参考了不知道多少篇文章,终于把环境装好了,每篇文章或多或少都有一些用,但没有一篇完整的能解决我安装过程碰到的问题,所以决定还是自己写一篇我安装过程的教程, ...