本文内容:
- 数据提取的基本概念和数据分类
- json字符串的数据提取方法
- 正则表达式的使用
- xpath语法基本使用
- beautifulSoup类库基本使用
- LXML类库的基本使用
一、爬虫中的数据分类
在爬虫爬取的数据中有很多不同类型的数据,我们需要了解数据的不同类型来有规律的提取和解析数据。
- 结构化数据:json;xml等
- 处理方式:直接转化为Python类型
- 非结构化数据:html
- 处理方式:正则表达式、xpath
二、json的数据提取
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,它使得人们很容易的进行阅读和编写。同时也方便了机器进行解析和生成。适用于进行数据交互的场景,比如网站前台与后台之间的数据交互。
-
在Python中,json提供了四个常用的方法:
- 如果比较喜欢xpath语话,还可以下载使用
jsonpath
,他的结构提取方法和xpath语法一样 - 说起json,有时候因为编码的问题,json提取数据失败,这时候可是尝试使用
simplejson
类库提供的方法来解决编码问题。 - simplejson传送门
三、正则表达式
用事先定义好的一些特定字符、及这些特定字符的组合,组成一个规则字符串,这个规则字符串用来表达对字符串的一种过滤逻辑。
Python的re模块完美支持正则表达式,熟练使用正则的语法之后,基本可以完美提取想要的信息
-
正则表达式语法
-
Python
re
模块常用方法-
pattern.match(从头找一个)
-
pattern.search(找一个)
-
parttern.findall(找所有)
# 返回一个列表,没有就是空列表 re.findall("\d","chuan1zhi2") >> ["1","2"]
-
partten.sub(替换)
-
partten.complie(编译)
-
四、xpath
XPath (XML Path Language) 是一门在 HTML\XML 文档中查找信息的语言,可用来在 HTML\XML 文档中对元素和属性进行遍历。
xpath文档传送门
-
xpah是非结构化数据里提取方法里面最快的,他是基于xml结构树来提取数据的
-
虽然xpath是最快的,但是相对的语法相较于beautifulSoup略显繁琐,需要掌握xaph的语法
五、beautifulsoup的使用
beautifulsoup不同于xpath只取部分xml结构树的节点,它会把所有的xml结构树都截取出来,因此在内存和时间上都要稍差于xpath,但是他的语法更简单
官方文档
六、xml结构的数据提取
- xml提取数据需要额外注意xml的空间命名值,提取的数据需要加上空间命名值
关于空间命名值得文章
总结:
就提取数据方法的速度而言, 最快的是正则表达式,想对的学习成本也是很高:
网友评论