2017-10-30 10 views
0

以下は、私が扱っているXMLバックアップの構造です。私はXMLからすべてのURLを取得するいくつかのコードを書いています - それぞれのURLに対して、XMLをトラバースして表示される方法がありますか?それが表示されるページID(XML構造の2番目のタグ) ?美しいスープでXMLのURLのすべてのページIDを見つける

<page> 
<id></id> 
<name></name> 
<description>&lt;a href=&quot;http://google.com&quot; target=&quot;_self&quot;&gt;LINK&lt;/a&gt;</description> 
<boxes> 
    <box> 
    </box> 
</boxes> 
</page> 

更新:

<page> 
<id></id> 
<name></name> 
<description></description> 
<url></url> 
<boxes> 
    <box> 
    <id></id> 
    <name></name> 
    <type></type> 
    <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> 
    <map_id></map_id> 
    <position></position> 
    <created></created> 
    <updated></updated> 
    </asset> 
    </assets> 
    </box> 
</boxes> 
</page> 
+0

そして、その構造上のどこに 'url'がありますか? – eLRuLL

+0

URLは説明ボックス内にあります。 – podusmonens

+1

完全な構造で質問を更新できますか? – eLRuLL

答えて

1

私はあなたがあなたの質問に提供するもので複製し、いくつかのIDを入れることで、XMLのファイルをアップしました。

<pages> 
    <page> 
    <id>1</id> 
    <name></name> 
    <description>&lt;a href=&quot;http://google.com&quot; target=&quot;_self&quot;&gt;LINK&lt;/a&gt;</description> 
    <boxes> 
     <box> 
     </box> 
    </boxes> 
    </page> 
    <page> 
    <id>2</id> 
    <name></name> 
    <description>&lt;a href=&quot;http://google.com&quot; target=&quot;_self&quot;&gt;LINK&lt;/a&gt;</description> 
    <boxes> 
     <box> 
     </box> 
    </boxes> 
    </page><page> 
    <id>3</id> 
    <name></name> 
    <description>&lt;a href=&quot;http://google.com&quot; target=&quot;_self&quot;&gt;LINK&lt;/a&gt;</description> 
    <boxes> 
     <box> 
     </box> 
    </boxes> 
    </page> 
</pages> 

このコードでは、idsと説明が表示されます。

>>> 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', '<a href="http://google.com" target="_self">LINK</a>') 
('2', '<a href="http://google.com" target="_self">LINK</a>') 
('3', '<a href="http://google.com" target="_self">LINK</a>') 
+0

ちょうど今これを試してみました:トレースバック(最近の最後の呼び出し): ファイル ""、行1、 ファイル "src/lxml/lxml.etree.pyx"、行2287、lxml。 "src/lxml/xpath.pxi"、359行、lxml.etree.XPathDocumentEvaluator .__ ca ll__(src \ lxml \ xpath.pxi) lxml.etree.c:173282) ファイル "src/lxml/xpath.pxi"、行227、lxml.etree._XPathEvaluatorBase._handle _result(src \ lxml \ lxml.etree.c:171653) lxml.etree .XPathEvalError:無効な式 – podusmonens

+0

質問には完全な 'page'要素が1つ示されています。また、最初の 'page'要素の前にあるxmlの行に入れますか?また、このエラーをスローするコードを実行してください。 –

+0

申し訳ありませんが上記のコードを使用して動作しましたが、ページの下に直接説明をキャッチしています。理想的には、私がしようとしているのは、ページIDを取得することです。それはURLです。そして、内の要素に表示される画像を各ページで探したいと思います。私はどのように各ボックスの要素からの説明を取得する方法を把握することができればそれは素晴らしいスタートとなるページとURLです!私は各ページの完全な構造で上記の投稿を編集しました。ご協力いただきありがとうございます。 – podusmonens

関連する問題