Heim > Backend-Entwicklung > Python-Tutorial > Umfassendes Verständnis der XLML-Parsing-Bibliothek des Python-Crawlers

Umfassendes Verständnis der XLML-Parsing-Bibliothek des Python-Crawlers

黄舟
Freigeben: 2017-08-08 11:33:08
Original
1656 Leute haben es durchsucht

Der folgende Editor bringt Ihnen einen Artikel über die XML-Parsing-Bibliothek des Python-Crawlers (umfassendes Verständnis). Der Herausgeber findet es ziemlich gut, deshalb teile ich es jetzt mit Ihnen und gebe es als Referenz. Folgen wir dem Editor, um einen Blick darauf zu werfen

1.Xpath

Elemente und Attribute in XML-Dokumenten durchlaufen. Sowohl XQuery als auch xpoint basieren auf dem XPath-Ausdruck

2. Knoten

Elternteil, Kind, Bruder (Geschwister), Vorfahre (Vorfahre), Nachkomme (Abkömmling)

3. Knoten auswählen

Pfadausdruck

表达式 描述 路径表达式 结果
nodename 选取此节点上的所有的子节点 bookstore 选取bookstore元素的所有子节点
/ 从根节点上选取 /bookstore 选取根元素bookstore,为绝对路径
// 从匹配选择的当前节点选择文档中的节点,不考虑位置 //book 选取所有的book子元素,而不管他们在文档的位置
. 选取当前节点 bookstore//book 选择bookstore后代中所有的book元素
.. 选取当前节点的父节点

@ 选取属性 //@lang 选取名为lang的所有属性

Prädikat

Das Prädikat wird verwendet, um einen bestimmten Knoten oder einen Knoten zu finden, der einen bestimmten Wert enthält

Das Prädikat ist in eckige Klammern eingebettet

路径表达式 结果
/bookstore/book[1] 选取属于bookstore子元素的第一个book元素
/bookstore/book[last()] 选取属于bookstore子元素的最后book元素
/bookstore/book[last()-1] 选取属于bookstore子元素的倒数第二个book元素
/bookstore/book[position()<3]选取最前面的两个属于bookstore元素的子元素的book元素
//title[@lang='eng']选取所有的title元素,并且这些元素拥有值为eng的lang属性
/bookstore/book[price>35.0] 选取bookstore元素的所有book元素,且其中的price值大于35.0

Unbekannte Knoten auswählen (Platzhalter)

* Entspricht jedem Elementknoten

@* Entspricht jedem Attributknoten

node() Entspricht jedem Knotentyp

4.lxml-Verwendung


#!/usr/bin/python
#_*_coding:utf-8_*_

from lxml import etree

text=&#39;&#39;&#39;
<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>
  &#39;&#39;&#39;

# html=etree.HTML(text) #html对象,存储在地址中,有自动修正功能
# result=etree.tostring(html) #将html对象转化为字符串

html=etree.parse(&#39;hello.html&#39;)
# result=etree.tostring(html,pretty_print=True)
# print result
print type(html)
result= html.xpath(&#39;//li&#39;)
print result
print len(result)
print type(result)
print type(result[0])
print html.xpath(&#39;//li/@class&#39;) # 获取li标签下的所有的class
print html.xpath(&#39;//li/a[@href="link1.html" rel="external nofollow" rel="external nofollow" ]&#39;) #获取li标签下href为link1的<a>标签
print html.xpath(&#39;//li//span&#39;) #获取li标签下所有的span标签
print html.xpath(&#39;//li[last()-1]/a&#39;)[0].text #获取倒数第二个元素的内容
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonUmfassendes Verständnis der XLML-Parsing-Bibliothek des Python-Crawlers. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage