数据提取方法

本文内容:

  • 数据提取的基本概念和数据分类
  • 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的空间命名值,提取的数据需要加上空间命名值
    关于空间命名值得文章

总结:

就提取数据方法的速度而言, 最快的是正则表达式,想对的学习成本也是很高:


你可能感兴趣的:(数据提取方法)