from lxml import etree
html = etree.parse('~~某html文本~~.txt',etree.HTMLParser())
result = html.xpath('//*')
print(result)
我们这次的目标,就是看看 xpath() 的参数能找到哪些节点或者属性或者文本内容
第一步,定位节点(定位了节点,才能取其属性值、文本内容把)
xpath('//li')
能找到所有的li节点
xpath('//li/a')
能找到所有li节点直接的a子节点
xpath('//li//a')
能找到li节点 的 子孙中的a节点
xpath(’//li/a[@class=”color“]‘)
能找到li节点的 满足class属性值为 color的 a子节点
xpath('//li/a[contains(@class,“li“)]')
当<a class='li li_color'>时,要匹配这样的节点,就要用contains()函数了
匹配所有li 节点中 满足 class属性包含 li 的a节点、
xpath('//li[@name=“item” and contains(@class,“666”)]')
找所有满足两个条件的li节点, 条件1:name属性值为item ,条件二 class属性值包含666
xpath('//li[@name="666"]/..')
找所有li节点 属性名name的属性值为666的父节点
xpath('//li[1]')
找所有li节点中的第一个li节点 (这里的顺序就是从1 开始的,并非0)
关于节点轴的这边省略了。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~·
想了想还是补一下:
xpath('//li/ancestor::*')#所有li节点的所有祖先节点
xpath('//li/ancestor::div')#所有li节点的所有是div的 祖先节点
xpath('//li/attribute::*')#所有li节点的所欲属性值
xpath('//li/child::a[@name="666"]')#所有li节点的直接孩子节点中 满足条件 name=666的 a节点
xpath('//li[1]/descendant::span')#第一个li节点的 子孙节点中的 span节点
xpath('//li[1]/following::*[2]')#第一个li节点之后的(内部节点不算)所有节点中的第二个节点
xpath('//li[1]/following-sibling::*')#第一个li节点之后的所有同辈节点
二。取节点的文本内容
xpath('//li/a/text()')
取所有li节点的直接子节点a 的内部文本内容
三。取节点的属性值
xpath('//li/a/@herf')
取所有li节点的直接子节点a 的herf属性值
ok
88
58万+

被折叠的 条评论
为什么被折叠?



