-2

を使用してxmlファイルをダウンロードします

wget -O example.xml http://gdata.youtube.com/feeds/api/videos?q=samsung+mobile&orderby=relevance&start-index=1&max-results=5&v=2

x_HFR3Hmv44から「x_HFR3Hmv44」などのビデオIDを取得し、2010-10-25T20:42:22.000Zから公開時刻を取得したい

ただし、次のコードを使用できませんでした

import xml.etree.cElementTree as et

sxml = open('example.xml', 'r').read()
tree=et.fromstring(sxml)
for el in tree.findall('published'):
    print el.getchildren()[1].text

しかし、私は失敗しました、出力は何もありません

誰かが私が間違っているところを教えてもらえますか?ありがとう!

xmlファイルをxml.etree.cElementTreeで処理できないためですか?ytがファイルで定義されていないのに、のようなタグがあります

4

2 に答える 2

1

正確に言うのは難しいですが、2つの問題があると思います。

  1. Element.findall()docsに従って、その要素の直接の子である要素のみを検索します。

  2. このタグが属するネームスペースを指定する必要があります。例えば:

    list(tree.iter('{http://www.w3.org/2005/Atom}published'))

于 2013-01-04T17:49:51.693 に答える
1

XML構造について混乱しているだけです。クエリ文字列に追加prettyprint=trueして、読みやすいインデントされたxmlを取得します。また、 YouTubeの要素参照リンクを参照して、何が期待できるかを理解してください。

これで始められます:

from urllib import urlopen
import xml.etree.cElementTree as ET

url = 'http://gdata.youtube.com/feeds/api/videos?q=samsung+mobile&orderby=relevance&start-index=1&max-results=5&v=2'

root = ET.parse(urlopen(url))

def qname(prefix, name, map={'atom':'http://www.w3.org/2005/Atom'}):
    """Helper function for namespaced element names"""
    return '{{{}}}{}'.format(map[prefix], name)


for e in root.findall(qname('atom','entry')):
    print e.findtext(qname('atom','id')), e.findtext(qname('atom','published'))
于 2013-01-04T18:07:04.813 に答える