XML- XML(EXtensibleMarkupLanguage) - 官方文檔http://www.w3school.com.cn/xml/index.asp- 概念:父節點,子節點,先輩節點,兄弟節點,後代節點XPath- XPath(XML Path Language), 是一門在XML文檔 ...
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的配合使用