当前位置: 首页 > 知识库问答 >
问题:

Python ElementTree查找不工作[重复]

邢新
2023-03-14

所以我试图解析一些opendata来构建一个数据库。以下是我所做的:

# -*- coding: utf-8 -*-
import urllib
import xml.etree.ElementTree as ET

url = 'http://opendata.cwb.gov.tw/govdownload?dataid=C-A0008-001&authorizationkey=rdec-key-123-45678-011121314'

root = ET.parse(urllib.urlopen(url)).getroot()

locations = root.findall('dataset/location')
print type(locations)
print "Counts:", len(locations)

它返回:

Counts: 0

我尝试解析其他一些xml数据(更改url),结果很好

我正在处理的xml数据大致如下:

<?xml version="1.0" encoding="UTF-8"?><cwbopendata xmlns="urn:cwb:gov:tw:cwbcommon:0.1">
<identifier>0f819d32-297a-4512-9654-990a565bd080</identifier>
<sender>weather@cwb.gov.tw</sender>
<sent>2016-05-23T16:07:06+08:00</sent>
<status>Actual</status>
<msgType>Issue</msgType>
<dataid>CWB_A0008</dataid>
<scope>Public</scope>
<dataset>
    <location>
        <stationId>72C44</stationId>
        <time>
        <dataTime>105 4_2</dataTime>
        </time>
        <weatherElement>
        <elementName>平均氣溫</elementName>
        <elementValue>
        <value>21.1</value>
        </elementValue>
        .
        .
        .
    </location>
    <location>
    .
    .   
    .

抱歉,我是python和ElementTree新手,希望能得到一些好的建议,谢谢

共有1个答案

齐志勇
2023-03-14

您的XML具有缺省命名空间,其URI为urn: cwb: gov: tw: cwb通用: 0.1。因此,在声明默认命名空间的元素中,所有没有前缀的元素都将被视为该命名空间中的元素:

>>> ns = {'d': 'urn:cwb:gov:tw:cwbcommon:0.1'}
>>> locations = root.findall('d:dataset/d:location', ns)
>>> print "Counts:", len(locations)
Counts: 17

相关:通过“ElementTree”在Python中解析带有名称空间的XML

 类似资料:
  • 我对Android/Kotlin非常陌生。我已经创建了一些程序,正在取得良好的进展。但是从今天开始,我遇到了一个问题,即使在标准的“Hello World”程序中也无法运行“find viewbyid”(空活动)。 我只在XML中添加了android:id=“@+id/mytext”一行。

  • https://www . n11 . com/telefon-ve-akesuarlari/CEP-telefon u-akesuarlari 在这个网站中,我尝试点击(下一页按钮) 我想赶上这条线 我正在程序中编写此代码 我的问题是关于这个问题,它不起作用

  • 我正在测试一个网站,以了解如何在C#中使用硒。我无法找到登录表单元素,因为表单输入元素没有任何标识符,而且xpath在我的代码中不起作用。 我包括了一张inspect元素代码的照片,我在检查相关的登录表单元素时看到了该代码。我的代码如下。 当然,我为密码包含的xpath是一个占位符,但它应该看起来与用户名相似。 在使用chrome的copy复制xpath时 我已经找了几个小时的答案,但什么都找不到

  • 我创建了这段代码,其中大部分代码都是使用toUpperCase,它应该使单词的每个首字母都大写。没有错误,因此我不确定该方法当前为何不起作用。为什么会这样呢。

  • 在插入数据库后,我一直在尝试重定向,但它不起作用。插入工作正常,但没有重定向。这是我的代码

  • 我正在使用泽西开发一个API,并希望将其准备好部署到Google App Engine。但是,当我在Postman上测试时,GET函数有效,但POST函数无效。我只收到一条简短的错误消息,即“错误415不支持的媒体类型”,我无法确定哪里出了问题。 请求资源类 请求服务等级 网状物XML 提前感谢所有帮助我指出并解决问题并回答我问题的人。