2016-10-10 4 views
4

Я использую синтаксический анализатор для получения rss-объектов. Когда я бегуЯ получаю индекс индекса за пределами диапазона для индекса, который существует

live_leak.links 

Я получаю

[{'type': 'text/html', 'rel': 'alternate', 'href': 
'http://www.liveleak.com/view?i=abf_1476121939'}, 

{'type': 'application/x-shockwave-flash', 'rel': 'enclosure', 'href': 
'http://www.liveleak.com/e/abf_1476121939'}] 

Но когда я пытаюсь это

live_leak.links[1] 

Я получаю индекс списка из диапазона, заметьте это работало раньше, то вдруг это не сработало. У меня было это в моем коде, и мне потребовалось несколько часов, чтобы найти, потому что я не понимал, что это не работает. Если никто не знает, что я сделаю замену строки как хак, но я скорее сделаю то, что уже работает.

это также работает

live_leak[0] 

возвращает

[{'type': 'text/html', 'rel': 'alternate', 'href': 
'http://www.liveleak.com/view?i=abf_1476121939'}] 

что странно, потому что другой не будет работать

EDIT

def pan_task(): 
     url = 'http://www.liveleak.com/rss?featured=1' 
     name = 'live leak' 
     live_leaks = [i for i in feedparser.parse(url).entries] 
     the_count = len(live_leaks) 
     ky = feedparser.parse(url).keys() 
     oky = [i.keys() for i in feedparser.parse(url).entries][:12] # shows what I can pull 

     try: 
      live_entries = [{ 
          'html': live_leak.links, 
          'href': live_leak.links[0]['href'], 
          'src': live_leak.media_thumbnail[0]['url'], 
          'text': live_leak.title, 
          'comments': live_leak.description, 
          'url': live_leak.links[0]['href'], 
          'embed': live_leak.links[1]['href'], 
          'text': live_leak.title, 
          'comments': live_leak.description, 
          'name': name, 
          'url': live_leak.link, # this is the link to the source 
          'author': None, 
          'video': False 
          } for live_leak in live_leaks] 
     except IndexError: 
      print('error check logs') 
      live_entries = [] 

     # for count, elem in enumerate(live_entries): 
     #  the_html = requests.get(live_entries[count]['url']) # a specific text 

     return print(live_entries[0]) 
+0

Если он говорит, что индекс за пределами допустимого диапазона, этот элемент не существует. – TigerhawkT3

+0

Re your edit: 'print()' возвращает 'None' – brianpck

ответ

0

Вы можете индексировать live_leak, но live_leak.links выглядит как другой тип конструкции, который возвращает элементы live_leak. Попробуйте live_leak [1], возможно?

0

Один ищет ссылки под live_leak, другой просто смотрит на live_leak.

, например: live_leak [1]

должен возвращать: [{ 'типа': 'применение/х-ударноволновая-вспышка', 'отн': 'корпус', 'HREF': ' http://www.liveleak.com/e/abf_1476121939 '}]