【问题标题】:Can't parse ArcGIS Services Directory sitemap with lxml无法使用 lxml 解析 ArcGIS 服务目录站点地图
【发布时间】:2023-04-08 01:24:02
【问题描述】:

我正在尝试解析 ArcGIS 服务目录站点地图中的所有 url

例如:

http://gisservices.its.ny.gov/arcgis/rest/services/?f=sitemap

使用:

from lxml import etree
from urllib.request import urlopen

xml = urlopen('http://gisservices.its.ny.gov/arcgis/rest/services/?f=sitemap')
tree = etree.parse(xml)

我似乎无法迭代元素树,更不用说找到特定的标签,比如'loc'

我做错了什么或者该 xml 有什么不寻常之处?

【问题讨论】:

    标签: python python-3.x python-requests lxml


    【解决方案1】:

    确保您考虑了默认命名空间(请参阅https://lxml.de/xpathxslt.html#namespaces-and-prefixes)。这是一个例子。

    from lxml import etree
    from urllib.request import urlopen
    
    req = urlopen("http://gisservices.its.ny.gov/arcgis/rest/services/?f=sitemap")
    
    namespaces = {"sm": "http://www.sitemaps.org/schemas/sitemap/0.9"}
    
    tree = etree.parse(req)
    
    for loc in tree.xpath("//sm:url/sm:loc", namespaces=namespaces):
        print(loc.text)
    

    打印输出...

    http://gisservices.its.ny.gov/arcgis/rest/services/BuildingFootprints/FeatureServer
    http://gisservices.its.ny.gov/arcgis/rest/services/BuildingFootprints/MapServer
    http://gisservices.its.ny.gov/arcgis/rest/services/CompositePointLocator/GeocodeServer
    http://gisservices.its.ny.gov/arcgis/rest/services/dec_lands/MapServer
    http://gisservices.its.ny.gov/arcgis/rest/services/dec_trails/MapServer
    http://gisservices.its.ny.gov/arcgis/rest/services/FindN/GPServer
    http://gisservices.its.ny.gov/arcgis/rest/services/gas_station/MapServer
    http://gisservices.its.ny.gov/arcgis/rest/services/NYS_Assembly_Districts/FeatureServer
    http://gisservices.its.ny.gov/arcgis/rest/services/NYS_Assembly_Districts/MapServer
    http://gisservices.its.ny.gov/arcgis/rest/services/NYS_Civil_Boundaries/FeatureServer
    http://gisservices.its.ny.gov/arcgis/rest/services/NYS_Civil_Boundaries/MapServer
    http://gisservices.its.ny.gov/arcgis/rest/services/NYS_Congressional_Districts/FeatureServer
    http://gisservices.its.ny.gov/arcgis/rest/services/NYS_Congressional_Districts/MapServer
    http://gisservices.its.ny.gov/arcgis/rest/services/NYS_Exits/FeatureServer
    http://gisservices.its.ny.gov/arcgis/rest/services/NYS_Exits/MapServer
    http://gisservices.its.ny.gov/arcgis/rest/services/NYS_Hydrography_HollowFill/MapServer
    http://gisservices.its.ny.gov/arcgis/rest/services/NYS_Hydrography/MapServer
    http://gisservices.its.ny.gov/arcgis/rest/services/NYS_Mesonet/MapServer
    http://gisservices.its.ny.gov/arcgis/rest/services/NYS_Place_Points/FeatureServer
    http://gisservices.its.ny.gov/arcgis/rest/services/NYS_Place_Points/MapServer
    http://gisservices.its.ny.gov/arcgis/rest/services/NYS_Schools/FeatureServer
    http://gisservices.its.ny.gov/arcgis/rest/services/NYS_Schools/MapServer
    http://gisservices.its.ny.gov/arcgis/rest/services/NYS_Senate_Districts/FeatureServer
    http://gisservices.its.ny.gov/arcgis/rest/services/NYS_Senate_Districts/MapServer
    http://gisservices.its.ny.gov/arcgis/rest/services/NYS_Streets/MapServer
    http://gisservices.its.ny.gov/arcgis/rest/services/NYS_Tax_Parcel_Centroid_Points/MapServer
    http://gisservices.its.ny.gov/arcgis/rest/services/NYS_Tax_Parcels_Public/MapServer
    http://gisservices.its.ny.gov/arcgis/rest/services/NYS_Tax_Parcels_State_Owned/MapServer
    http://gisservices.its.ny.gov/arcgis/rest/services/NYSLayersMap/MapServer
    http://gisservices.its.ny.gov/arcgis/rest/services/NYSTaxAssessmentLookup/GPServer
    http://gisservices.its.ny.gov/arcgis/rest/services/OVS_Sites/MapServer
    http://gisservices.its.ny.gov/arcgis/rest/services/SAM_Address_Points_Symbolized/MapServer
    http://gisservices.its.ny.gov/arcgis/rest/services/SAM_Address_Points/MapServer
    http://gisservices.its.ny.gov/arcgis/rest/services/Locators/NYPlace/GeocodeServer
    http://gisservices.its.ny.gov/arcgis/rest/services/Locators/Street_and_Address_Composite/GeocodeServer
    http://gisservices.its.ny.gov/arcgis/rest/services/Locators/Street_NoNum_and_ZipCode_Composite/GeocodeServer
    http://gisservices.its.ny.gov/arcgis/rest/services/Utilities/PrintingTools/GPServer
    http://gisservices.its.ny.gov/arcgis/rest/services/Utilities/RasterUtilities/GPServer
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-16
      • 1970-01-01
      • 2012-07-12
      • 1970-01-01
      • 2014-11-15
      • 1970-01-01
      • 2018-07-15
      相关资源
      最近更新 更多