Я получаю ошибку List index out of range для существующего индекса

#python #rss #feedparser

#python #RSS-канал #feedparser

Вопрос:

Я использую анализатор каналов для получения объектов 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'}]
  

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

Редактировать

 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])
  

Комментарии:

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

2. Повторите редактирование: print() возвращает None

Ответ №1:

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

Ответ №2:

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

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

должен возвращать: [{‘type’: ‘application /x-shockwave-flash’, ‘rel’: ‘enclosure’, ‘href’: ‘http://www.liveleak.com/e/abf_1476121939 ‘}]