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是列表