如何在使用lxml/xpath的XML导出中找到所有带有IMG标记的指南id和页面?

2024-04-26 00:22:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我如何解析下面的XML来查找每个指南的ID和UL,然后查找指南中的每个页面的ID和出现在BOX/BOX/ASSETS/DESCRIPTION中的任何图像?图像是HTML格式的,所以我需要从每个图像抓取源代码。你知道吗

  <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

Tags: name图像boxidurltypepage指南
1条回答
网友
1楼 · 发布于 2024-04-26 00:22:30

代码的模式可能类似,但我无法检查这一点,因为我没有完整的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使自己的生活更轻松,这样我就可以识别它的结构。你知道吗

相关问题 更多 >