Python爬虫11-XML与XPath

  • 2020 年 1 月 16 日
  • 笔记

GitHub代码练习地址:用lxml解析HTML,文件读取,etree和XPath的配合使用:https://github.com/Neo-ML/PythonPractice/blob/master/SpiderPrac17_xpath%26lxml.py
XML  - XML(EXtensibleMarkupLanguage)  - 官方文档http://www.w3school.com.cn/xml/index.asp  - 概念:父节点,子节点,先辈节点,兄弟节点,后代节点    XPath  - XPath(XML Path Language), 是一门在XML文档中查找信息的语言,  - 官方文档: http://www.w3school.com.cn/xpath/index.asp  - XPath开发工具      - 开源的XPath表达式工具: XMLQuire      - chrome插件: Xpath Helper      - Firefox插件: XPath CHecker    - 常用路径表达式:      - nodename: 选取此节点的所有子节点      - /: 从根节点开始选      - //: 选取元素,而不考虑元素的具体为止      - .:  当前节点      - ..:父节点      - @: 选取属性      - 案例:          - booksotre: 选取bookstore下的所有子节点          - /booksotre: 选取根元素          - booksotre/book: 选取bookstore的所有为book的子元素          - //book: 选取book子元素          - //@lang:选取名称为lang的所有属性    - 谓语(Predicates)      - 谓语用来查找某个特定的节点,被镶嵌在方括号中      - /bookstore/book[1]: 选取第一个属于bookstore下叫book的元素      - /bookstore/book[last()]: 选取最后一个属于bookstore下叫book的元素      - /bookstore/book[last()-1]: 选取倒数第二个属于bookstore下叫book的元素      - /bookstore/book[position()<3]: 选取属于bookstore下叫book的前两个元素      - /bookstore/book[@lang]: 选取属于bookstore下叫book的,含有属性lang元素      - /bookstore/book[@lang="cn"]: 选取属于bookstore下叫book的,含有属性lang的值是cn的元素      - /bookstore/book[@price < 90]: 选取属于bookstore下叫book的,含有属性price的,且值小于90的元素      - /bookstore/book[@price < 90]/title: 选取属于bookstore下叫book的,含有属性price的,且值小于90的元素的子元素title    - 通配符      - `*` : 任何元素节点      - @*: 匹配任何属性节点      - node(): 陪陪任何类型的节点    - 选取多个路径      - //book/tile  | //book/author : 选取book元素中的title和author元素      - //tile | //price: 选取文档中所有的title和price元素
lxml库  - python的HTML/XML的解析器  - 官方文档:   http://lxml.de/index.html  - 功能:      - 解析HTML      - 文件读取      - etree和XPath的配合使用