Python----XPath基础[头歌题解]

题目来源:头歌平台------数据采集与网络爬虫
下述题解均通过测试,如果小伙伴有出现测试不通过的情况,大概是原题出现变化或是编码时出现漏缺,答案仅供参考,祝大家一通百通。

第一关、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 **********

第二关、XPath 轴定位

1.选取所有属于当前节点的子元素的 book 节点
********** Begin *********        
child::book
*********** End **********

2.选取当前节点的 lang 属性
********** Begin *********        
attribute::lang
*********** End **********

3.选取当前节点的所有 price 孙节点
********** Begin *********        
child::*/child::price
*********** End **********

第三关、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 ********* #
print(tree.xpath('//book[price < "30"]/title/text()')[0])    
# *********** End ********** #

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值