一、页面解析和数据提取
一般来讲对我们而言,需要抓取的是某个网站或者某个应用的内容,提取有用的价值。内容一般分为两部分,非结构化的数据 和 结构化的数据。
非结构化数据:先有数据,再有结构,
结构化数据:先有结构、再有数据
不同类型的数据,我们需要采用不同的方式来处理。
非结构化的数据处理
文本、电话号码、邮箱地址
- 正则表达式
HTML 文件
- 正则表达式
- XPath
- CSS选择器
结构化的数据处理
JSON 文件
- JSON Path
- 转化成Python类型进行操作(json类)
XML 文件
- 转化成Python类型(xmltodict)
- XPath
- CSS选择器
- 正则表达式
二、为什么要学正则表达式
实际上爬虫一共就四个主要步骤:
- (1) 明确目标 (要知道你准备在哪个范围或者网站去搜索)
- (2) 爬 (将所有的网站的内容全部爬下来)
- (3) 取(去掉对我们没用处的数据)
(4) 处理数据(按照我们想要的方式存储和使用)
我们在之前的案例里实际上省略了第3步,也就是"取"的步骤。因为我们down下了的数据是全部的网页,这些数据很庞大并且很混乱,大部分的东西使我们不关心的,因此我们需要将之按我们的需要过滤和匹配出来。
那么对于文本的过滤或者规则的匹配,最强大的就是正则表达式,是Python爬虫世界里必不可少的神兵利器。
1、什么是正则表达式
正则表达式,又称规则表达式,通常被用来检索、替换那些符合某个模式(规则)的文本。
正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及
这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
给定一个正则表达式和另一个字符串,我们可以达到如下的目的:
- (1) 给定的字符串是否符合正则表达式的过滤逻辑(“匹配”);
- (2) 通过正则表达式,从文本字符串中获取我们想要的特定部分(“过滤”)。