【问题标题】:Parsing XML from URL and getting info from tag从 URL 解析 XML 并从标签获取信息
【发布时间】:2021-01-19 14:35:36
【问题描述】:

我尝试使用 python 从 XML 中的标签“CRS”获取信息并收集所有 CRS 标签,或者稍后我将编辑代码以检查特定的 CRS。

网址:https://wms.geonorge.no/skwms1/wms.adm_enheter_historisk?service=WMS&request=GetCapabilities

我可以获取数据,但我不知道如何从正确的标签中获取信息。

这是我目前的代码:

import urllib.request, urllib.parse, urllib.error
import xml.etree.ElementTree as ET

url = 'https://wms.geonorge.no/skwms1/wms.adm_enheter_historisk?service=WMS&request=GetCapabilities'
uh = urllib.request.urlopen(url)
data = uh.read()

tree = ET.fromstring(data)

从这里我不确定如何继续使用 tree.find() 或 tree.findall()

谢谢。

【问题讨论】:

  • 到目前为止你尝试过什么? documenation 有多种示例,其中一些似乎与您的问题相关。
  • 您将需要搜索“如何在 elementree 中将 XML 与默认命名空间一起使用”这样的内容

标签: python xml parsing elementtree wms


【解决方案1】:

所以,这就是我所做的。我需要检查 XML 是否包含 CRS EPSG:3857。因此,我没有获取 CRS 标记中的所有信息,而是通过测试解析的 XML 是否包含文本“EPSG:3857”来解决这个问题。

import urllib.request, urllib.parse, urllib.error
import xml.etree.ElementTree as ET

url = 'https://wms.geonorge.no/skwms1/wms.adm_enheter_historisk?service=WMS&request=GetCapabilities'
uh = urllib.request.urlopen(url)
data = uh.read()

projection = "EPSG:3857"

if projection in str(data):
    print("Contains")
else:
    print("Contains not")

现在在另一个程序中实现搜索多个 XML 文件。

【讨论】:

    【解决方案2】:

    试试这个。

    from simplified_scrapy import req, SimplifiedDoc
    xml = req.get(
        'https://wms.geonorge.no/skwms1/wms.adm_enheter_historisk?service=WMS&request=GetCapabilities'
    )
    doc = SimplifiedDoc(xml)
    listCRS = doc.selects('CRS')
    print(listCRS)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-24
      • 2021-07-01
      • 1970-01-01
      相关资源
      最近更新 更多