美文网首页
python爬虫之解析模块

python爬虫之解析模块

作者: 行走世间的狮子 | 来源:发表于2019-08-16 17:54 被阅读0次

    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进一步解析
    

    相关文章

      网友评论

          本文标题:python爬虫之解析模块

          本文链接:https://www.haomeiwen.com/subject/cvbqsctx.html