爬虫之re数据提取的使用
本文将业务场景中最常用的几点实例,给大家列举出来,不常见的不再一一赘述。
使用urllib库可以模拟浏览器发送请求获得服务器返回的数据,下一步就是把有用的数据提取出来。数据分为两种形式:结构化和非结构化。
非结构化的数据一般指的是文本和HTML。文本的内容特别的杂乱,比如有电话号码,邮箱等信息,只能使用正则表达式进行提取;HTML可以使用CSS选择器,Xpath、正则表达式进行提取。
结构化的数据一般指的是JSON和XML。JSon可以使用JSonPath处理,也可以转化成python对象。XML可以转化成python对象,或者使用CSS选择器、Xpath、正则表达式进行提取。
这节主要研究一下正则表达式的使用方法和re模块的常用方法。
--------------------------------------------------------------华丽的分隔符---------------------------------------------------------------------
match():
从字符串起始位匹配,如果匹配则返回第一个次提取的内容,如果不匹配则返回None。

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

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

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

切记,如果match对象为None时,使用group和span等方法会抛出异常,使用时进行非空判断。
search():
从字符串任意位匹配,如果匹配则返回第一个次提取的内容,如果不匹配则返回None。

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

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

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

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

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

finditer返回的迭代对象可以理解为match对象的集合,通过for遍历的方式,可以获取match,group方法可以获取匹配的值。
split():
从字符串任意位匹配,如果匹配,则以匹配的内容为分割点,返回切分后的list数据。


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

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

作者:爱折腾的胖子
链接:https://www.jianshu.com/p/6b443c37ed5d
來源:简书
爬虫之re数据提取的使用的更多相关文章
- python 爬虫与数据可视化--数据提取与存储
一.爬虫的定义.爬虫的分类(通用爬虫.聚焦爬虫).爬虫应用场景.爬虫工作原理(最后会发一个完整爬虫代码) 二.http.https的介绍.url的形式.请求方法.响应状态码 url的形式: 请求头: ...
- python爬虫的页面数据解析和提取/xpath/bs4/jsonpath/正则(1)
一.数据类型及解析方式 一般来讲对我们而言,需要抓取的是某个网站或者某个应用的内容,提取有用的价值.内容一般分为两部分,非结构化的数据 和 结构化的数据. 非结构化数据:先有数据,再有结构, 结构化数 ...
- Python爬虫教程-18-页面解析和数据提取
本篇针对的数据是已经存在在页面上的数据,不包括动态生成的数据,今天是对HTML中提取对我们有用的数据,去除无用的数据 Python爬虫教程-18-页面解析和数据提取 结构化数据:先有的结构,再谈数据 ...
- Python爬虫10-页面解析数据提取思路方法与简单正则应用
GitHub代码练习地址:正则1:https://github.com/Neo-ML/PythonPractice/blob/master/SpiderPrac15_RE1.py 正则2:match. ...
- Python——爬虫——数据提取
一.XML数据提取 (1)定义:XML指可扩展标记语言.标记语言,标签需要我们自行定义 (2)设计宗旨:是传输数据,而非显示数据,具有自我描述性 (3)节点关系: 父:每个元素及属性都有一个父. ...
- 爬虫数据提取之JSON与JsonPATH
数据提取之JSON与JsonPATH JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,它使得人们很容易的进行阅读和编写.同时也方便了机器进行解析和生成.适 ...
- python爬虫数据提取之bs4的使用方法
Beautiful Soup的使用 1.下载 pip install bs4 pip install lxml # 解析器 官方推荐 2.引用方法 from bs4 import BeautifulS ...
- python爬虫(一)_爬虫原理和数据抓取
本篇将开始介绍Python原理,更多内容请参考:Python学习指南 为什么要做爬虫 著名的革命家.思想家.政治家.战略家.社会改革的主要领导人物马云曾经在2015年提到由IT转到DT,何谓DT,DT ...
- 05.Python网络爬虫之三种数据解析方式
引入 回顾requests实现数据爬取的流程 指定url 基于requests模块发起请求 获取响应对象中的数据 进行持久化存储 其实,在上述流程中还需要较为重要的一步,就是在持久化存储之前需要进行指 ...
随机推荐
- Nginx访问控制模块
一.Nginx访问控制模块 Nginx默认安装的模块http_access_module,可以基于来源IP进行访问控制. 1.模块安装 nginx中内置ngx_http_access_module,除 ...
- 剑指C++面试
传闻公司老总欠下巨款,带着小姨子跑路了~ 树倒猢狲散,接下来要好好准备面试,以期找到一份满意的工作. 面试准备分下面几个方面进行,形成面试系列文章,文章内容以问答的方式呈现. 1.C++语言基础 传 ...
- RabbitMQ in Action(5): Clustering and dealing with failure
Batteries included: RabbitMQ clustering The clustering built in to RabbitMQ was designed with two go ...
- 从NoSQL到NewSQL,谈交易型分布式数据库建设要点
在上一篇文章<从架构特点到功能缺陷,重新认识分析型分布式数据库>中,我们完成了对不同"分布式数据库"的横向分析,本文Ivan将讲述拆解的第二部分,会结合NoSQL与Ne ...
- Java垃圾回收概览
GC要解决三个主要的问题: 哪些内存需要回收? 什么时候回收? 如何回收? 哪些内存需要回收? 最简单的是引用计数(reference count),缺陷是无法解决循环引用.于是更快点的算法是可达性分 ...
- Java初学者容易犯的代码错误
1. 不会判断空 空指针异常是所有Java初学者接触最多的异常,没有之一.原因是,你们拿到一个对象后容易不假思索的直接使用(直接给这个对象的属性赋值,直接调用这个对象的方法等),不报异常才怪呢!下面是 ...
- Javascript高级编程学习笔记(66)—— 事件(10)变动事件
变动事件 DOM2级的变动事件,能在DOM中的一部分发生变化时给出提示 变动事件是为XML或HTML DOM 设计的,并不特定于某种语言 DOM2级定义了如下变动事件: DOMSubtreeModif ...
- Kali学习笔记26:OWASP_ZAP
文章的格式也许不是很好看,也没有什么合理的顺序 完全是想到什么写一些什么,但各个方面都涵盖到了 能耐下心看的朋友欢迎一起学习,大牛和杠精们请绕道 OWASP_ZAP扫描器不同于之前介绍的Web扫描器: ...
- Metasploit Framework(5)弱点扫描
文章的格式也许不是很好看,也没有什么合理的顺序 完全是想到什么写一些什么,但各个方面都涵盖到了 能耐下心看的朋友欢迎一起学习,大牛和杠精们请绕道 当我们发现了目标机器开放的端口,开启的服务等等之后 就 ...
- Spring Boot 返回 XML 数据,一分钟搞定!
Spring Boot 返回 XML 数据,前提必须已经搭建了 Spring Boot 项目,所以这一块代码就不贴了,可以点击查看之前分享的 Spring Boot 返回 JSON 数据,一分钟搞定! ...