我正在尝试如何使用lxml解析url中的xml,以返回title属性的值。有人知道我错了什么或者什么会返回标题值/文本吗?所以在下面的例子中,我想返回'Weeds-S05E05-Van Nuys-HD-TV'的值
来自URL的XML:
<?xml version="1.0" encoding="UTF-8"?>
<subsonic-response xmlns="http://subsonic.org/restapi" status="ok" version="1.8.0">
<song id="11345" parent="11287" title="Weeds - S05E05 - Van Nuys - HD TV" album="Season 5" artist="Weeds" isDir="false" created="2009-07-06T22:21:16" duration="1638" bitRate="384" size="782304110" suffix="mkv" contentType="video/x-matroska" isVideo="true" path="Weeds/Season 5/Weeds - S05E05 - Van Nuys - HD TV.mkv" transcodedSuffix="flv" transcodedContentType="video/x-flv"/>
</subsonic-response>
我当前的Python代码:
^{pr2}$用上面的代码我没有得到数据返回,有什么想法吗?在
从树中打印=
<lxml.etree._ElementTree object at 0x0000000003348F48>
打印出的歌曲=
[]
整个问题在于
subsonic-response
标记有一个xmlns
属性,表示存在有效的xml命名空间。下面的代码考虑到了这一点,并正确地收集了歌曲标签。在首先,您实际上并没有在代码中使用} module 。在
lxml
。导入lxml
HTML解析器,但是忽略它,只使用标准库^{其次,搜索
data/song
,但文档中没有任何data
元素,因此不会找到匹配项。最后,但并非最不重要的是,这里有一个使用名称空间的文档。搜索元素时必须包含这些元素,或者使用{*}
通配符搜索。在以下为您查找歌曲:
要使用显式命名空间,您必须将
^{pr2}${*}
通配符替换为完整的命名空间URL;默认命名空间可在tree
对象的.nsmap
命名空间dict中找到:谢谢你们的帮助,我用了你们两个的组合让它工作起来。在
相关问题 更多 >
编程相关推荐