2017-02-10 80 views
0

我正在使用Lxml库。我有一些问题按照我想要的方式打印信息。Python lxml打印问题

任何想法,我又怎么能这样:

Lista vídeo: PV1 
Lista vídeo: PV2 
    Link:http://i.imgur.com/BOApo7g.jpg 
    Link:http://i3.ytimg.com/vi/uMK0prafzw0/hqdefault.jpg 

进入这个:

Lista vídeo: PV1 
    Link:http://i.imgur.com/BOApo7g.jpg 
Lista vídeo: PV2 
    Link:http://i3.ytimg.com/vi/uMK0prafzw0/hqdefault.jpg 

这是我的Python 3.4.3代码:

import lxml.etree as ElementTree 

treeDoc = ElementTree.parse("XMLTube.xml") 
listas = treeDoc.xpath("//lista") 


def printListasVideos(treeDoc): 
    printListaVideo("link") 


def printListaVideo(listaVideoElem): 
     for lista in listas: 
      print("Lista vídeo: " + lista.get("id")) 

     if listaVideoElem == "link": 
      links = treeDoc.xpath("//thumbnail") 
      for link in links: 
       print(" " + "Link:" + link.get("link")) 

XML代码: (这是葡萄牙语,但我不认为这很重要)

<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?> 
<!DOCTYPE xml_tube SYSTEM "C:\Users\Asus\Desktop\LEIM\tps\tp2\Lista Geral de Utilizadores\xml__tube.dtd"> 

<?xml-stylesheet type="text/xsl" href="Videos.xsl"?> 

<xml_tube> 
    <utilizadores> 
     <utilizador username="Guicky" password="futurama96"> 
      <nome>Guilherme Luís</nome> 
      <birthday>1996-11-28</birthday> 
      <foto href="http://i.imgur.com/fKVoJAA.jpg"/> 
     </utilizador> 
     <utilizador username="Daisy" password="woofwoof11"> 
      <nome>Daisy Luís</nome> 
      <birthday>2011-04-04</birthday> 
      <foto href="http://i.imgur.com/EgkXou1.jpg"/> 
     </utilizador> 
     <utilizador username="Anabela65" password="crumble65"> 
      <nome>Anabela Ribeiro</nome> 
      <birthday>1965-04-02</birthday> 
      <foto href="http://i.imgur.com/ccIzEv6.jpg"/> 
     </utilizador> 
     <utilizador username="Izzie" password="lagartixa"> 
      <nome>Isadora Luís</nome> 
      <birthday>1988-06-27</birthday> 
      <foto href="http://i.imgur.com/AttHDR1.jpg"/> 
     </utilizador> 
    </utilizadores> 
    <videos_pub> 
     <video id="Vid1" publisher="Daisy" duracao="3:37" data="2016-02-29"> 
      <título> Baha Men - Who let the dogs out?</título> 
      <thumb>http://i3.ytimg.com/vi/Qkuu0Lwb5EM/hqdefault.jpg</thumb> 
      <descrição>My favorite song, lol.</descrição> 
      <hyperlink>https://www.youtube.com/embed/He82NBjJqf8</hyperlink> 
      <qualidade pixelization="1080p"/> 
      <qualidade pixelization="480p"/> 
      <likes liked="Guicky"/> 
     </video> 
     <video id="Vid2" publisher="Guicky" duracao="4:01" data="2016-02-29"> 
      <título>Desiigner - Timmy Turner</título> 
      <thumb>http://i3.ytimg.com/vi/JzmRt2VgKYQ/hqdefault.jpg</thumb> 
      <descrição>Timmy Timmy Timmy Turner.</descrição> 
      <hyperlink>https://www.youtube.com/embed/ProbPpO_8oo</hyperlink> 
      <qualidade pixelization="720p"/> 
      <qualidade pixelization="1080p"/> 
      <likes liked="Anabela65"/> 
      <likes liked="Daisy"/> 
      <related> 
       <link id="Vid3"/> 
       <link id="Vid4"/> 
      </related> 
     </video> 
     <video id="Vid3" publisher="Guicky" duracao="3:47" data="2016-02-29"> 
      <título>Fat Joe - I'm all the way up</título> 
      <thumb>http://i3.ytimg.com/vi/y2ak_oBeC-I/hqdefault.jpg</thumb> 
      <descrição>Nothing can stop me, I'm all the way up.</descrição> 
      <hyperlink>https://www.youtube.com/embed/y2ak_oBeC-I</hyperlink> 
      <qualidade pixelization="480p"/> 
      <qualidade pixelization="720p"/> 
      <likes liked="Guicky"/> 
      <likes liked="Daisy"/> 
      <likes liked="Anabela65"/> 
      <likes liked="Izzie"/> 
      <related> 
       <link id="Vid2"/> 
      </related> 
     </video> 
     <video id="Vid4" publisher="Anabela65" duracao="3:21" data="2016-02-29"> 
      <título>Putzgrilla - Sentadinha</título> 
      <thumb>http://i3.ytimg.com/vi/QC4JbIvIhdI/hqdefault.jpg</thumb> 
      <descrição>Dá uma sentadinha.</descrição> 
      <hyperlink>https://www.youtube.com/embed/QC4JbIvIhdI</hyperlink> 
      <qualidade pixelization="720p"/> 
      <likes liked="Guicky"/> 
      <likes liked="Daisy"/> 
      <related> 
       <link id="Vid2"/> 
      </related> 
     </video> 
     <video data="2017-01-13" duracao="02:16" id="Vid5" publisher="Izzie"> 
      <título>Yann Tiersen - La Valse d'Amelie</título> 
      <thumb>http://i3.ytimg.com/vi/uzurqBnALkw/hqdefault.jpg</thumb> 
      <descrição>A minha música preferida.</descrição> 
      <hyperlink>https://www.youtube.com/embed/uzurqBnALkw</hyperlink> 
      <qualidade pixelization="720p"/> 
      <likes liked="Guicky"/> 
      <likes liked="Anabela65"/> 
     </video> 
    </videos_pub> 
    <playlist> 
     <lista owner="Guicky" dataIns="2016-10-24" id="PV1"> 
      <titulo>BEST MUSIC.</titulo> 
      <descricao>Compilation of my favourite music videos.</descricao> 
      <gostosL gostouL="Guicky"/> 
      <links_vid vid="Vid2"/> 
      <links_vid vid="Vid3"/> 
      <administradores> 
       <admin ref="Guicky"/> 
       <admin ref="Daisy"/> 
      </administradores> 
      <editores> 
       <editor ref="Guicky"/> 
      </editores> 
      <subscritores> 
       <subs ref="Daisy"/> 
       <subs ref="Anabela65"/> 
      </subscritores> 
      <thumbnail link="http://i.imgur.com/BOApo7g.jpg"/> 
     </lista> 
     <lista owner="Anabela65" dataIns="2016-02-29" id="PV2"> 
      <titulo>Sentadinha!</titulo> 
      <descricao>Siting lesson's with Guicky's mom!</descricao> 
      <links_vid vid="Vid4"/> 
      <administradores> 
       <admin ref="Anabela65"/> 
       <admin ref="Guicky"/> 
      </administradores> 
      <editores> 
       <editor ref="Anabela65"/> 
      </editores> 
      <subscritores> 
       <subs ref="Guicky"/> 
       <subs ref="Daisy"/> 
      </subscritores> 
      <thumbnail link="http://i3.ytimg.com/vi/uMK0prafzw0/hqdefault.jpg"/> 
     </lista> 
    </playlist> 
    <comentarios> 
     <comentario id="C1" refV="Vid1" user="Guicky" data="2016-10-23"> 
      <text>AHAHAHAHA, bom vídeo.</text> 
      <gosto gostou="Daisy"/> 
      <respostas> 
       <texto autor="Daisy">Grande clássico!</texto> 
      </respostas> 
     </comentario> 
     <comentario id="C2" refL="Vid2" user="Anabela65" data="2016-10-22"> 
      <text>Timmy timmy timmy turner...</text> 
      <gosto gostou="Guicky"/> 
      <gosto gostou="Daisy"/> 
      <respostas> 
       <texto autor="Guicky">U know it.</texto> 
       <resposta autor="Daisy">LOL!</resposta> 
      </respostas> 
     </comentario> 
    </comentarios> 
</xml_tube> 
+1

请提供样本数据来了解XML结构 – Shijo

+0

好,提供!! – Guilhermeffable

回答

1

让我知道这是否适合你。请注意,我做你的基本代码一些变化

import lxml.etree as ElementTree 

def printListasVideos(): 
    treeDoc = ElementTree.parse("inv1.xml") 
    listas = treeDoc.xpath("//lista") 
    for lista in listas: 
     printListaVideo(lista) 

def printListaVideo(listAElement): 
    print("Lista vídeo: " + listAElement.get("id")) 
    links = listAElement.findall(".//thumbnail") 
    for link in links: 
     print link.get('link') 

printListasVideos() 

输出

Lista vídeo: PV1 
http://i.imgur.com/BOApo7g.jpg 
Lista vídeo: PV2 
http://i3.ytimg.com/vi/uMK0prafzw0/hqdefault.jpg 
+0

是这样,谢谢了很多。你能告诉我们findall是如何工作的吗?谢谢! – Guilhermeffable

+0

http://infohost.nmt.edu/~shipman/soft/pylxml/web/Element-findall.html -findall返回与匹配xpath匹配的完整元素列表 – Shijo