Анализ нескольких RSS-каналов (Python)

Использование Feedparser для анализа нескольких RSS-каналов, но эта функция не работает. Как я могу создать функцию для анализа каналов и получения ссылки из записи канала для дальнейшего перехода к твиту?

def get():
    rss_url = [
    'http://www.huffingtonpost.com/news/syria/feed/',
    'http://www.nytimes.com/svc/collections/v1/publish  /www.nytimes.com/topic/destination/syria/rss.xml',
    ]

def getHeadlines(rss_url):
    feeds = []
    for url in rss_url:
        feeds.append(feedparser.parse(url))

    for feed in feeds:
        for post in feed.entries:
            return post.link

tweet(getHeadlines(rss_url))

Я могу сделать это, когда я пытаюсь только это -

RSS_URLS = [
'http://feeds.feedburner.com/RockPaperShotgun',
'http://www.gameinformer.com/b/MainFeed.aspx?Tags=preview',
]

feed = feedparser.parse(RSS_URLS)

for post in feed.entries:
    print post.title

person codenovice    schedule 16.04.2017    source источник
comment
Что значит безрезультатно в данном контексте? Каким образом этот код не делает то, что вы ожидаете? Прочтите Как задавать вопросы, чтобы получить советы по задаванию эффективных вопросов; это самое большое, что вы можете сделать, чтобы увеличить свои шансы на получение хорошего ответа.   -  person Chris    schedule 16.04.2017
comment
Я ожидаю, что код будет анализировать каналы и получать ссылку на каждую запись в канале. Этого не происходит, когда я определяю функцию.   -  person codenovice    schedule 16.04.2017
comment
Пожалуйста, исправьте отступ вашего блока кода. Сейчас неясно, какие строки являются частью getHeadlines(), а какие нет.   -  person Chris    schedule 16.04.2017
comment
Фиксированный. Надеюсь, сейчас лучше?   -  person codenovice    schedule 16.04.2017


Ответы (1)


returnв цикле не возвращается список вещей; это приводит к немедленному возврату функции.

В этом случае вы получите только результат первой итерации цикла (первая ссылка из первого поста в первой ленте). Посмотрите на возвращаемое значение вашего текущего getHeadlines(rss_url), чтобы понять, что я имею в виду.

Вместо этого вы можете создать список ссылок аналогично тому, как вы создаете список feeds, и вернуть его:

links = []
for feed in feeds:
    for post in feed.entries:
        links.append(post.link)

return links

Я не уверен, каким должен быть tweet(), но вам, вероятно, придется твитнуть каждый элемент в вашем списке по отдельности.

person Chris    schedule 16.04.2017
comment
Вы имеете в виду создание другого списка URL-адресов? Не могли бы вы объяснить немного подробнее? - person codenovice; 17.04.2017
comment
@codenovice, я обновил свой ответ. Пожалуйста, посмотрите, ясно ли теперь. - person Chris; 18.04.2017
comment
@codenovice, вы смогли заставить это работать, используя предоставленное мной решение? Если это так, не забудьте принять его. Это показывает другим пользователям, что вы нашли решение. - person Chris; 22.04.2017