第1关 XPath 路径表达式
1.选取bookstore元素的所有子节点
********** Begin *********
bookstore
*********** End **********
2.选取所有拥有名为 lang 的属性的 title 元素
********** Begin *********
//title[@lang]
*********** End **********
3.选取所有 title 元素,且这些元素拥有值为 eng 的 lang 属性和值为good的class属性
********** Begin *********
//title[@lang='eng' and @class="good"]
*********** End **********
4.选取属于 bookstore 子元素的book元素下的所有文本内容
********** Begin *********
/bookstore/book/text()
*********** End **********
5.选取属于 bookstore 子元素的第一个 book 元素
********** Begin *********
/bookstore/book[1]
*********** End **********
第2关 XPath 轴定位
1.选取所有属于当前节点的子元素的 book 节点
********** Begin *********
child::book
*********** End **********
2.选取当前节点的 lang 属性
********** Begin *********
attribute::lang
*********** End **********
3.选取当前节点的所有 price 孙节点
********** Begin *********
child::*/child::price
*********** End **********
第3关 XPath 解析
# 导入lxml库
from lxml import etree
# 读取lll.html文件并转化为元素树对象
parse = etree.HTMLParser(encoding='utf-8')
tree = etree.parse('src/step3/lll.html', parse)
# 补充xpath表达式,获取所有书的名称
# ********** Begin ********* #
print(tree.xpath('//book/title/text()'))
# *********** End ********** #
# 补充xpath表达式,获取所有书的价格
# ********** Begin ********* #
print(tree.xpath('//book/price/text()'))
# *********** End ********** #
# 填写代码, 获取价格低于30的书名
# ********** Begin **********#
A=tree.xpath('//book[price<30.00]/title/text()')
print(A[0])
# *********** End ********** #