首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python爬虫数据提取

来源:离岛链接:

https://segmentfault.com/a/1190000013196759

通过爬虫抓取到的内容,需要提取出有用的东西,这一步就是数据提取或者数据清洗

内容一般分为两部分,非结构化的数据 和 结构化的数据。

非结构化数据:先有数据,再有结构,比如文本、电话号码、邮箱地址(利用正则表达式处理)、HTML 文件(利用正则、XPath、CSS选择器)

结构化数据:先有结构、再有数据,比如JSON(JSON Path)/XML (Xpath/正则等)

不同类型的数据,我们需要采用不同的方式来处理。

实际上爬虫一共就四个主要步骤:

明确目标 (要知道你准备在哪个范围或者网站去搜索)

爬 (将所有的网站的内容全部爬下来)

取 (去掉对我们没用处的数据)

处理数据(按照我们想要的方式存储和使用)

什么是正则表达式

正则表达式,又称规则表达式,通常被用来检索、替换那些符合某个模式(规则)的文本。

正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。

在任何编程语言中都有正则表达式,JS、JAVA、C#等等多有,Python 自1.5版本起增加了re 模块,re 模块使 Python 语言拥有全部的正则表达式功能。

正则匹配的规则

re模块使用步骤

在 Python 中,我们可以使用内置的 re 模块来使用正则表达式。

有一点需要特别注意的是,正则表达式使用 对特殊字符进行转义,所以如果我们要使用原始字符串,只需加一个 r 前缀,示例:r'testt.tpython'

re 模块的一般使用步骤如下:

1.使用 compile() 函数将正则表达式的字符串形式编译为一个 Pattern 对象

2.通过 Pattern 对象提供的一系列方法对文本进行匹配查找,获得匹配结果,一个 Match 对象。

3.最后使用 Match 对象提供的属性和方法获得信息,根据需要进行其他的操作

具体的正则表达式如何编写,其实就是根据上图的元字符进行组合,匹配你要的结果,

小练习1:找出字符串中的数字。 d表示 0-9 + 表示匹配前一个字符1次或无限次

小练习2:找出单词中包含 oo的单词

大概知道了正则的书写方式以后,先来看后续的步骤,不要着急,编写正则是个积累的过程。

compile() 函数将正则表达式的字符串形式编译为一个 Pattern 对象,Pattern 对象提供的一系列方法对文本进行匹配查找,来罗列下方法:

m.search函数会在字符串内查找模式匹配,只要找到第一个匹配然后返回,如果字符串没有匹配,则返回None。

m.findall遍历匹配,可以获取字符串中所有匹配的字符串,返回一个列表。

m.match()决定RE是否在字符串刚开始的位置匹配

m.split()按照能够匹配的子串将string分割后返回列表

m.sub()使用re替换string中每一个匹配的子串后返回替换后的字符串。

正则练习题

1 已知字符串:

info = 'baidu'

2 字符串:"one1two2three3four4" 用正则处理,输出 "1234"

3 已知字符串:text = "JGood is a handsome boy, he is cool, clever, and so on..." 查找所有包含'oo'的单词。

正则练习题答案:

爬虫内涵段子正则匹配爬取

(完)

看完本文有收获?请转发分享给更多人

关注「Python那些事」,做全栈开发工程师

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180208B05UX800?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券