爬虫之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模块发起请求 获取响应对象中的数据 进行持久化存储 其实,在上述流程中还需要较为重要的一步,就是在持久化存储之前需要进行指 ...
随机推荐
- Mysql函数大全以及存储过程、函数、触发器、游标等等
https://www.cnblogs.com/slowlyslowly/p/8649430.html MySQL大全 存储过程: 基本语法 : create procedure sp_name([[ ...
- 搭建node js的运行环境。
第一步:首先安装一个NVM,就是一个node的版本管理器. nvm的下载地址::https://github.com/coreybutler/nvm-windows/releases,我选择下载的是n ...
- eclipse maven install 报错 jdk rather than jre?
解决方案:window => Perference => java => install jre => 选中jre => edit => 选择文件夹为jdk的
- 酷炫,用Html5/CSS实现文字阴影
前两天有一个学html5前端小美女问我一个有关文字阴影的效果怎么去实现.她和我说文字阴影嘛,她也知道text-shadow,.但是却做不出想要的样子,其实css3的新功能是很强大的,不要把你的思想太过 ...
- VMware虚拟机磁盘操作占用过高问题
使用虚拟机运行Linux图形桌面时,经常因为一个网页或者编译某个程序就导致虚拟机卡死,甚至影响主机使用.明明主机内存有8G,分配给虚拟机的内存也不少,为什么就这么卡顿.打开主机上的任务管理器查看发现磁 ...
- PHP全栈学习笔记18
php基础知识,JavaScript,jQuery,ajax基础知识 linux基础知识,mysql数据库的基础与优化 程序设计,PHP框架基础知识,算法,逻辑思维,高并发 PHP基础知识 引用变量, ...
- 纯小白创建第一个Node程序失败-容易忽略的一个细节
一直觉得自己基础还很差,所以自觉不敢去碰node.js,但又对其心怀好奇.恰巧最近有一点空闲时间,忍不住去试了一下水 这不,在创建第一个node程序时就吃了闭门羹,总是提示我没有定义,如下图, 这 ...
- 使用git在github上创建新工程
这段时间进经常会忘记如何在github上同步工程,于是又得查资料,查参考书,浪费了很长时间,因此有了感触,写几篇有关此类问题的篇章! 这是老手新手都十分容易犯的错误,就是在创建一个新github项目或 ...
- Java的优点
前几天面试被问到:“Java的优点有哪些?”,当时只回答了跨平台和解释型两点,做的并不是太好,所以今天小编就总结一下Java的几大优点,增加自己的知识储备. 1.跨平台性: Java通过自带的JVM实 ...
- python不同开根号速度对比
import time import math import numpy as np def timeit1(): s = time.time() for i in range(750000): z= ...