美文网首页
2018-09-14XML——了解一下^_^

2018-09-14XML——了解一下^_^

作者: 棕色试剂瓶 | 来源:发表于2018-09-14 18:47 被阅读0次

    知己知彼,百战不殆。 -------------------------《孙子兵-谋攻篇》

    XML是什么?_?

    • 可扩展标记语言,类似于HTML全称(Xtensible Markup Language)
    • 生来便为传输数据,而不是显示数据。
    • XML具有自我描述性,标签需要我们自行定义。

    那什么是XPath呢?

    它是一门再XML文档中查找信息的语言,用来再XML中对节点和属性进行遍历。

    常用的XPath开发环境:

    • 开源的Xpath表达式编辑工具:XMLQuire(XML格式文件可用)
    • Chrome插件:XPath Helper
    • Firefox插件: XPath Checker

    接下来,操练起来,孩儿们!!!

    首先安装lxml

    pip install lxml

    接着导入它

    from lxml import etree #这样写后面会出现红色波浪线,但是可以正常使用

    我们可以下main两行代码解决

    import lxml.html
    etree = lxml.html.etree

    常用的方法

    1. etree.parse()
      读取xml文件,结果为xml对象(object)
    2. etree.HTML(string_html)
      将字符串形式的html文件转化为xml对象
    3. etree.tostring(htmlelemt, encoding = "utf-8").decode("utf-8")
      etree.tostring(html,encoding="utf-8", pretty_print = True).decode()
      按字符串系列化HTML文档
      (注意:这里的tostring的s是小写的,不要写出大写的)

    选择器

    表达式 描述
    nodename 选取此节点内的所有子节点。
    / 从根节点选取(选取直接子节点)
    // 在全局搜索,不考虑位置(当用在中间位置是标识所有子孙节点)
    . 选取当前节点
    .. 选取当前节点的父节点
    @ 选取属性(/div[@class = "container"])

    实战——用lxml读取html文件

    import lxml.html
    etree = lxml.html.etree
    
    parser = etree.HTMLParser(encoding = "utf-8")
    htmlelement = etree.parse("mafengwo.html", parser = parser)
    print(htmlelement)# 此时是对象类型
    # 这句代码只在研究时有用,正常时没用
    html_string = etree.tostring(htmlelement, encoding = "utf-8").decode("utf-8")
    print(html_string)
    # 读取innerText
    links = htmlelement.xpath("//h3/a[@class='_j_search_link']")
    for link in links:
        print(link.text)
    
    # 读取属性的值
    with open("mafengwo.html", "r+") as fp:
        content = fp.read()
        html = etree.HTML(content)
        titles = html.xpath("//div/div/span/@title")
        for title in titles:
            print(title)
    
    
    

    相关文章

      网友评论

          本文标题:2018-09-14XML——了解一下^_^

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