python爬虫之解析模块

json模块 ---> json

1. 什么是json?

javascript中的对象和数组
对象 :{key: value, ...}
数组 :[value, value, ...]

2. 作用

json格式的字符串 和 Python数据类型 之间的转换

3. 常用方法

  • p = json.loads(s)
    • 功能: 把json格式字符串转为Python数据类型对象,json的对象转为-python的字典,json的数组转为python的列表
    • 参数: json格式字符串
    • 返回值: python数据类型对象
  • s = json.dumps(p, ensure_ascii=True)
    • 功能: 把python数据类型对象转为json格式字符串
    • 参数:
      p : python数据类型对象
      ensure_ascii : 默认使用ascii编码
    • 返回值: json格式字符串

4. 补充函数

# 能把字符串里的内容转换为一句python语句
s = '{"a": 1, "b": 2}'
print(type(eval(s))) # ---> dict
s = '[1, 2, 3, 4, 5]'
print(type(eval(s))) # ---> list

re模块 ---> 万能

1. 正则方法

  • p = re.compile(s[, re.S])
    • 功能:编译正则表达式
    • 参数:
      s: 正则表达式
      re.S: 让.可以匹配\n
    • 返回值:编译对象
  • r_list = p.findall(html)
    • 功能: 根据正则表达式在html里进行匹配
    • 参数: 需要匹配的字符串
    • 返回值:
      • 若不分组,则返回所有匹配的内容组成的列表
        [结果1, 结果2, 结果3, ...]
      • 若分组,则把每个分组匹配结果组成元组,再以列表的形式返回全部匹配结果
        [(group1, gourp2, ...), (), () ...]

2. 注意内容

贪婪匹配(.), 非贪婪匹配(.?):非贪婪匹配尽可能少的匹配字符串,爬虫解析中多用非贪婪匹配

lxml模块 ---> HTML

1. 什么是xpath?

xpath是在XML文档中查找信息的语言,同样适用于HTML文档的检索

2. xpath辅助工具

  • Chrome插件 :XPath Helper
    打开/关闭 :Ctrl + Shift + X
  • Firefox插件 :XPath checker
  • XPath表达式编辑工具 :XML quire

3. 语法

  • / : 从根节点开始选取
  • // : 从整个文档中查找节点
    eg: //price 、 /bookstore/book//price
  • @ : 选取某个节点的属性
    eg: /title[@lang="en"]
    • @的使用:
      • 选取1个节点 : //title[@lang="en"]
      • 选取N个节点 : //title[@lang]
      • 选取节点的属性值 : //title/@lang
  • | : 匹配多路径
    eg://book/title | //book/price`: 获取所有book节点下的 title节点和price节点
  • contains() : 匹配一个属性值中包含某些字符串的节点
    eg: //title[contains(@lang,"e")]
  • text() : 获取节点中的文本
    eg: //title[contains(@lang,"e")]/text()
  • 节点对象.text : 获取节点中的文本

4. 使用

from lxml import etree
# 利用lxml库的etree模块创建解析对象
parseHtml = etree.HTML(html)
# 解析对象调用xpath工具定位节点信息
r_list = parseHtml.xpath('xpath表达式')
# 返回值:
#    若xpath表达式里已经获取文本,则返回文本列表
#    若没有,则返回节点对象列表,调用text属性可获取文本,也可再调用xpath进一步解析
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • XPath 是一门在 XML 文档中查找信息的语言。XPath 可用来在 XML 文档中对元素和属性进行遍历,而将...
    哈耶卡卡阅读 10,333评论 0 1
  • 常用模块 认识模块 什么是模块 什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文...
    go以恒阅读 6,099评论 0 6
  • 远看青山尽苍松, 白云为衣树为皮。 不屑老愚头皮硬, ...
    红璞阅读 1,007评论 0 0
  • 三十二岁生日刚过,突然感觉自己很迷茫。 人人都说三十而立,然而三十到底立的是什么?立家?立业?立人?在我看来,都不...
    请不要把我遗忘阅读 1,020评论 0 3
  • 读书笔记之《财富自由之路》及思考 之一 很惭愧到现在才开始读这本财富自由之路,现在读了三分之一左右,读的时候发现,...
    Appour阅读 2,767评论 1 1