Простая очистка YouTube YouTube, чтобы получить список видео Python - PullRequest
1 голос
/ 21 сентября 2009

У меня есть XML-канал, скажем:

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

Я хочу получить список ссылок на видео:

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

Ответы [ 4 ]

7 голосов
/ 21 сентября 2009
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 docs для ElementTree).

3 голосов
/ 21 сентября 2009

Взгляните на Универсальный анализатор каналов , который является открытым исходным кодом RSS и Atom-анализатор каналов для Python.

3 голосов
/ 21 сентября 2009

В таком простом случае этого должно быть достаточно:

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 будет лучше, чем регулярные выражения

1 голос
/ 21 сентября 2009
import urllib
from xml.dom import minidom
xmldoc = minidom.parse(urllib.urlopen('http://gdata.youtube.com/feeds/api/videos/-/bass/fishing/'))

links = xmldoc.getElementsByTagName('link')
hrefs = []
for links in link:
    if link.getAttribute('rel') == 'alternate':
        hrefs.append( link.getAttribute('href') )

hrefs
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...