当前位置: 首页 > 面试题库 >

从Python中的XML节点解析文本

马权
2023-03-14
问题内容

我正在尝试从这样的站点地图中提取URL:https :
//www.bestbuy.com/sitemap_c_0.xml.gz

我已经解压缩并将.xml.gz文件另存为.xml文件。结构如下:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xhtml="http://www.w3.org/1999/xhtml" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
<url>
    <loc>https://www.bestbuy.com/</loc>
    <priority>0.0</priority>
</url>
<url>
    <loc>https://www.bestbuy.com/site/3d-printers/3d-printer-filament/pcmcat335400050008.c?id=pcmcat335400050008</loc>
    <priority>0.0</priority>
</url>
<url>
    <loc>https://www.bestbuy.com/site/3d-printers/3d-printing-accessories/pcmcat748300527647.c?id=pcmcat748300527647</loc>
    <priority>0.0</priority>
</url>

我正在尝试使用ElementTree提取整个文件中 loc 节点内的所有URL ,但仍在努力使其正常工作。

根据文档,我正在尝试这样的事情:

import xml.etree.ElementTree as ET
tree = ET.parse('my_local_filepath')
root = tree.getroot()

value = root.findall(".//loc")

但是,没有任何东西可以载入价值。我的目标是提取loc节点之间的所有URL,并将其打印到新的平面文件中。我要去哪里错了?


问题答案:

我们可以遍历URL,将它们扔到列表中,然后将它们写到文件中:

from xml.etree import ElementTree as ET

tree = ET.parse('test.xml')
root = tree.getroot()

name_space = '{http://www.sitemaps.org/schemas/sitemap/0.9}'

urls = []
for child in root.iter():
    for block in child.findall('{}url'.format(name_space)):
        for url in block.findall('{}loc'.format(name_space)):
            urls.append('{}\n'.format(url.text))

with open('sample_urls.txt', 'w+') as f:
    f.writelines(urls)
  • 请注意,我们需要从打开的urlset定义中追加名称空间,以正确解析xml


 类似资料:
  • 问题内容: 我想使用python解析一个简单的小型XML文件,但是在pyXML上的工作似乎已经停止了。如果可能的话,我想使用python 2.6。谁能推荐可以与2.6兼容的XML解析器? 谢谢 问题答案: 如果它既小又简单,则只需使用标准库即可: 这将返回实现标准文档对象模型API的DOM树 如果以后需要执行诸如模式验证或XPath查询之类的复杂操作,那么我建议使用第三方lxml模块,它是流行的l

  • 我正在尝试用解析XML中不同元素的特定方法编写一些单元测试。但是我在单元测试中解析“测试”xml文件时遇到了一些问题。 我的问题并不是与XML/XSD文件有关,而是关于如何在单元测试中正确解析它们。 这是我到目前为止的代码: 即使我在实现方法中以同样的方式进行解析,我也会得到以下错误: 错误:读取文件“dir/testxsd.xsd”时出错:无法加载外部实体“dir/testxsd.xsd” 我尝

  • 问题内容: 我想解析这个XML文件: 要解析的XML文件: 我想将要点名称和方案返回给我。因此,对于示例文件,我想要AbsoluteValue和场景列表(CALCULATED和INPUT_IS_BLANK)。如果我错了,请纠正我,但是要使用的数据结构是 如何在Java代码中完成此操作?如果可能的话,我想使用XPATH。 我以为这是获取每个SCENARIO的正确XPATH表达式? 问题答案: 感谢M

  • 问题内容: 在下面的示例XML中,如果E = 13,则如何使用java解析器删除整个B节点。 请指教。 问题答案: 替代DOM方法 另外,您可以使用JDK中的XPath功能来查找值“ 13”的“ B”元素,然后从其父级中删除它,而不是对XML文档进行蛮力遍历: 使用XPath的优点是易于维护,如果结构更改,则只需对代码进行一行更改。同样,如果文档的深度增加,基于XPath的解决方案将保持相同的行数

  • 本文向大家介绍python解析xml文件实例分析,包括了python解析xml文件实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python解析xml文件的方法。分享给大家供大家参考。具体如下: python解析xml非常方便。在dive into python中也有讲解。 如果xml的结构如下: 第三个book是没有title标记的。由于不要相信代码输入,所以在代码中要做检查(

  • 问题内容: 我以前从未真正使用过DOM解析器,现在有一个问题。 我将如何从该标记中提取URL: 问题答案: 使用simpleXML: 输出: