xml下用xpath

1
2
3
4
from lxml import etreetree = etree.parse(file_path)
root = tree.getroot()
title_expression = "/article/title[not(@xml:lang)]//text()"
title_content = root.xpath(title_expression)

直接在网页上的xpath

1
2
from lxml import html
response = requests.get(url) html_content = response.content # 使用lxml解析HTML文档 tree = html.fromstring(html_content)

  

1 从节点筛选

  • /: 从根节点开始选择。
  • //: 选择节点,不考虑它们的位置。
  • .: 选择当前节点。
  • ..: 选择父节点。

  

2 条件筛选

1
2
3
4
5
6
7
8
9
10
@选择属性。<br>选择 category 属性为 'fiction' 的 <book> 节点:
/bookstore/book[@category='fiction']
 
 
选择 price 属性大于 30 的 <book> 节点
/bookstore/book[@price > 30]
 
 
选择不包含某个属性的节点
//bookstore/book[not(@category)]

  

4. 选取文字

1
在xpath表达式后面加上/text()<br><br>选取该节点下的所有文字 //text()<br><br>

  

5. 多项选择

 

6. 选取之后遍历 body_expression = '/article/body/section'

1
body_expression = '/article/body/section'<br>body_results = root.xpath(body_expression)<br>body_dict = {}<br>body_dict['开头'] = body_p_results<br>for result in body_results:<br>    title = result.xpath('title/text()')<br>    title = ''.join(title)title是列表

  

posted on   黑逍逍  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!



点击右上角即可分享
微信分享提示