简单抓取YouTube XML以获取Python视频列表

1 投票
4 回答
2984 浏览
提问于 2025-04-15 14:27

我有一个XML数据源,比如说:

http://gdata.youtube.com/feeds/api/videos/-/bass/fishing/

我想要获取这个数据源里视频的链接列表:

 ['http://www.youtube.com/watch?v=aJvVkBcbFFY', 'ht....', ... ]

4 个回答

3

在这么简单的情况下,这样就足够了:

import re, urllib2
request = urllib2.urlopen("http://gdata.youtube.com/feeds/api/videos/-/bass/fishing/")
text = request.read()
videos = re.findall("http:\/\/www\.youtube\.com\/watch\?v=[\w-]+", text)

如果你想做更复杂的事情,解析XML会比用正则表达式更合适。

3

你可以看看Universal Feed Parser,这是一个开源的RSS和Atom信息提取工具,专门为Python编程语言设计的。

7
from xml.etree import cElementTree as ET
import urllib

def get_bass_fishing_URLs():
  results = []
  data = urllib.urlopen(
      'http://gdata.youtube.com/feeds/api/videos/-/bass/fishing/')
  tree = ET.parse(data)
  ns = '{http://www.w3.org/2005/Atom}'
  for entry in tree.findall(ns + 'entry'):
    for link in entry.findall(ns + 'link'):
      if link.get('rel') == 'alternate':
        results.append(link.get('href'))

看起来你得到的是所谓的“备用”链接。如果你想要一些稍微不同的东西,可能会有很多小的变化。我希望从上面的代码中能看得出来(还有标准的Python库文档,关于ElementTree的部分)。

撰写回答