码迷,mamicode.com
首页 > 其他好文 > 详细

爬虫之re数据提取的使用

时间:2019-02-18 16:11:37      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:col   有序   margin   isp   microsoft   实例   split()   orm   交换   

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

   使用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数据提取的使用

标签:col   有序   margin   isp   microsoft   实例   split()   orm   交换   

原文地址:https://www.cnblogs.com/beiyi888/p/10396023.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!