2017-04-16 8 views
0

Utilisation de Feedparser pour analyser plusieurs flux RSS, mais cette fonction ne fonctionne pas. Comment puis-je créer une fonction pour analyser les flux et obtenir le lien hors de l'entrée de flux pour pousser plus loin à un tweet?Analyse de plusieurs flux RSS (Python)

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

Je suis en mesure de le faire quand j'essaie juste ce -

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 
+0

Que signifie "en vain" dans ce contexte? En quoi ce code ne fait-il pas ce que vous attendez? Veuillez lire [demander] pour obtenir des conseils sur la façon de poser des questions efficaces; C'est la seule chose que vous pouvez faire pour augmenter vos chances d'obtenir une bonne réponse. – Chris

+0

Je m'attends à ce que le code analyse les flux et dérive le lien de chaque entrée dans le flux. Ce n'est pas ce que je fais quand je définis une fonction. – codenovice

+0

Veuillez corriger l'indentation de votre bloc de code. À l'heure actuelle, il n'est pas clair quelles lignes font partie de 'getHeadlines()' et quelles lignes ne le sont pas. – Chris

Répondre

0

return ing dans une boucle ne provoque pas une liste de choses à retourner; Cela provoque la fonction à retourner immédiatement.

Dans ce cas, vous n'obtiendrez que le résultat de la première itération de boucle (le premier lien du premier message du premier flux). Jetez un oeil à la valeur de retour de votre getHeadlines(rss_url) actuel pour voir ce que je veux dire.

Au lieu de cela, vous pouvez créer une liste de liens de façon similaire à la façon dont vous construisez une liste des feeds et retour que:

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

return links 

Je ne suis pas sûr de ce que tweet() est censé être, mais vous Vous devez probablement tweeter chaque élément de votre liste individuellement.

+0

Voulez-vous dire créer une autre liste d'URL? Pourriez-vous expliquer un peu plus loin? – codenovice

+0

@codenovice, j'ai mis à jour ma réponse. S'il vous plaît voir si c'est clair maintenant. – Chris

+0

@codenovice, avez-vous été capable de travailler avec la solution que j'ai fournie? Si c'est le cas, n'oubliez pas de [l'accepter] (https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work). Cela montre aux autres utilisateurs que vous avez trouvé une solution. – Chris