2017-11-02 7 views
0

각 GUIDE, ID 및 UL, GUIDE 내의 각 페이지, 페이지 ID 및 BOX/BOX/ASSETS/DESCRIPTION에 나타나는 이미지를 찾으려면 어떻게해야합니까? 이미지는 HTML 형식이므로 각 이미지에서 소스를 가져와야합니다.lxml/xpath를 사용하여 XML 내보내기에서 IMG 태그가있는 모든 가이드 ID 및 페이지를 찾는 방법은 무엇입니까?

<guide> 
    <id></id> 
    <url></url> 
    <group> 
    <id></id> 
<type></type> 
<name></name> 
    </group> 
    <pages> 
    <page> 
<id></id> 
<name></name> 
<description></description> 
<boxes> 
    <box> 
    <id></id> 
    <name></name> 
    <type></type> 
    <map_id></map_id> 
    <column></column> 
    <position></position> 
    <hidden></hidden> 
    <created></created> 
    <updated></updated> 
    <assets> 
    <asset> 
    <id></id> 
    <name></name> 
    <type></type> 
    <description></description> 
    <url/> 
    <owner> 
     <id></id> 
     <email></email> 
     <first_name></first_name> 
     <last_name></last_name> 
    </owner> 
    </asset> 
     </assets> 
    </box> 
    </boxes> 
    </page> 
    </pages> 
    </guide> 

이 나에게 자신의 ID 및 설명과 함께 페이지를 제공하지만 내가 액세스해야 자산 요소 내부의 설명을, 그리고 가이드/페이지가에 있습니다.

from lxml import etree 
tree = etree.parse('temp.xml') 
for page in tree.xpath('.//page'): 
    page.xpath('id')[0].text, page.xpath('description')[0].text 

답변

1

코드의 패턴은 유사하지만 전체 xml이 없기 때문에 이것을 확인할 수 없습니다.

>>> from lxml import etree 
>>> tree = etree.parse('temp.xml') 
>>> for guide in tree.xpath('guide'): 
...  '---', guide.xpath('id')[0].text 
...  for pages in guide.xpath('.//pages'): 
...   for page in pages: 
...    '------', page.xpath('id')[0].text 
...    for description in page.xpath('.//asset/description'): 
...     '---------', description.text 
... 
('---', 'guide 1') 
('------', 'page 1') 
('---------', 'description') 

나는 당신의 XML은 여러 guide 요소를 가질 것이라고 가정한다. 이것이 내가 파싱 한 것입니다.

<guides> 
    <guide> 
     <id>guide 1</id> 
     <url></url> 
     <group> 
     <id></id> 
     <type></type> 
     <name></name> 
     </group> 
     <pages> 
      <page> 
       <id>page 1</id> 
       <name></name> 
       <description></description> 
       <boxes> 
        <box> 
         <id></id> 
         <name></name> 
         <type></type> 
         <map_id></map_id> 
         <column></column> 
         <position></position> 
         <hidden></hidden> 
         <created></created> 
         <updated></updated> 
         <assets> 
          <asset> 
           <id></id> 
           <name></name> 
           <type></type> 
           <description>description</description> 
           <url/> 
           <owner> 
            <id></id> 
            <email></email> 
            <first_name></first_name> 
            <last_name></last_name> 
           </owner> 
          </asset> 
         </assets> 
        </box> 
       </boxes> 
      </page> 
     </pages> 
    </guide> 
</guides> 

XML 구조를 식별 할 수 있도록 xml을 들여 쓰기가 쉬워졌습니다.

+0

감사합니다. - 지금 사용해 보겠습니다. '------'에 해당하는 부분은 무엇입니까? – podusmonens

+0

하이픈은 각 가이드 항목 아래에 일련의 해당 페이지 항목이 있으며 각 항목 아래에 일련의 해당 설명 항목이 있음을 지적해야합니다. –

+0

감사합니다. 예상대로 작동하지만 결과를 읽는 것은 매우 어렵습니다. 이걸 스프레드 시트로 출력하는 방법을 생각해 내게 올바른 방향을 가르쳐 주시겠습니까? – podusmonens