xml下用xpath

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

直接在网页上的xpath

from lxml import html
response = requests.get(url) 
html_content = response.content

# 使用lxml解析HTML文档
tree = html.fromstring(html_content)

  

1 从节点筛选

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

  

2 条件筛选

@选择属性。
选择 category 属性为 'fiction' 的 <book> 节点: /bookstore/book[@category='fiction'] 选择 price 属性大于 30 的 <book> 节点 /bookstore/book[@price > 30] 选择不包含某个属性的节点 //bookstore/book[not(@category)]

  

4. 选取文字

在xpath表达式后面加上/text()

选取该节点下的所有文字 //text()

  

5. 多项选择

 

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

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

  

posted on 2023-12-04 09:45  黑逍逍  阅读(3)  评论(0编辑  收藏  举报