【发布时间】:2012-11-28 15:37:17
【问题描述】:
我试图弄清楚如何使用 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 代码:
import lxml
from lxml import html
from urllib2 import urlopen
url = 'https://myurl.com'
tree = html.parse(urlopen(url))
songs = tree.findall('{*}song')
for song in songs:
print song.attrib['title']
使用上面的代码,我没有得到任何数据返回,有什么想法吗?
打印出树 =
<lxml.etree._ElementTree object at 0x0000000003348F48>
打印出歌曲 =
[]
【问题讨论】:
-
您没有使用
lxml功能。只有标准库ElementTree实现实际上在您的示例中起作用。import lxml.html as lh可以安全地从代码中删除。 -
我已经尝试过使用内置的 ElementTree,但也无法让它工作,所以我想我会尝试 lxml。只是不知道如何编写正确的代码。