Maison >développement back-end >Tutoriel Python >Compréhension complète de la bibliothèque d'analyse XML du robot d'exploration Python
L'éditeur suivant vous proposera un article sur la bibliothèque d'analyse xlml du robot d'exploration Python (compréhension complète). L'éditeur le trouve plutôt bon, je vais donc le partager avec vous maintenant et le donner comme référence pour tout le monde. Suivons l'éditeur pour jeter un œil
1.Xpath
Parcourez les éléments et les attributs dans les documents XML. XQuery et xpoint sont tous deux construits sur l'expression XPath
2 Noeud
parent, enfant, frère (frère), ancêtre (ancêtre), descendant (Dcendant)
3. Sélectionnez le nœud
Expression du chemin
表达式 | 描述 | 路径表达式 | 结果 |
nodename | 选取此节点上的所有的子节点 | bookstore | 选取bookstore元素的所有子节点 |
/ | 从根节点上选取 | /bookstore | 选取根元素bookstore,为绝对路径 |
// | 从匹配选择的当前节点选择文档中的节点,不考虑位置 | //book | 选取所有的book子元素,而不管他们在文档的位置 |
. | 选取当前节点 | bookstore//book | 选择bookstore后代中所有的book元素 |
.. | 选取当前节点的父节点 | ||
@ | 选取属性 | //@lang | 选取名为lang的所有属性 |
Prédicat
Le prédicat est utilisé pour trouver un nœud spécifique ou un nœud contenant une valeur spécifiée
Le prédicat est placé entre crochets
路径表达式 | 结果 |
/bookstore/book[1] | 选取属于bookstore子元素的第一个book元素 |
/bookstore/book[last()] | 选取属于bookstore子元素的最后book元素 |
/bookstore/book[last()-1] | 选取属于bookstore子元素的倒数第二个book元素 |
/bookstore/book[position()08f90382772bc0c937572960a35e50ec35.0] | 选取bookstore元素的所有book元素,且其中的price值大于35.0 |
Sélectionnez les nœuds inconnus (caractères génériques)
* Faites correspondre n'importe quel nœud d'élément
@* Faites correspondre n'importe quel nœud d'attribut
node() Correspond à tout type de nœud
Utilisation de 4.lxml
#!/usr/bin/python #_*_coding:utf-8_*_ from lxml import etree text=''' <p> <ul> <li class="item-0"><a href="link1.html" rel="external nofollow" rel="external nofollow" >first item</a></li> <li class="item-1"><a href="link2.html" rel="external nofollow" >second item</a></li> <li class="item-inactive"><a href="link3.html" rel="external nofollow" >third item</a></li> <li class="item-1"><a href="link4.html" rel="external nofollow" >fourth item</a></li> <li class="item-0"><a href="link5.html" rel="external nofollow" >fifth item</a> </ul> </p> ''' # html=etree.HTML(text) #html对象,存储在地址中,有自动修正功能 # result=etree.tostring(html) #将html对象转化为字符串 html=etree.parse('hello.html') # result=etree.tostring(html,pretty_print=True) # print result print type(html) result= html.xpath('//li') print result print len(result) print type(result) print type(result[0]) print html.xpath('//li/@class') # 获取li标签下的所有的class print html.xpath('//li/a[@href="link1.html" rel="external nofollow" rel="external nofollow" ]') #获取li标签下href为link1的<a>标签 print html.xpath('//li//span') #获取li标签下所有的span标签 print html.xpath('//li[last()-1]/a')[0].text #获取倒数第二个元素的内容
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!