2017-04-16 65 views
0

使用Feedparser解析多个RSS提要,但此功能不起作用。我如何创建一个函数来解析提要并从提要条目中获取链接以进一步推送推文?解析多个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)) 

我能做到这一点,当我尝试只是这一点 -

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

在这种情况下,“无功”意味着什么?这种代码以什么方式不符合你的期望?请阅读[问]提出有效问题的提示;这是你可以做的最大的事情,以增加获得良好答案的机会。 – Chris

+0

我期望代码解析订阅源并获取订阅源中每个条目的链接。当我定义一个函数时没有这样做。 – codenovice

+0

请修正您的代码块的缩进。现在,不清楚getHeadlines()是什么行,哪些行不是。 – Chris

回答

0

return荷兰国际集团在循环中不会造成对事物要返回一个列表;它导致函数立即返回。

在这种情况下,您只会获得第一次循环迭代的结果(第一次馈送中第一次发布的第一个链接)。看看你当前的getHeadlines(rss_url)的返回值,看看我的意思。

相反,你可以建立一个链接列表,类似你是如何构建的feeds列表,并返回:

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

return links 

我不知道什么tweet()应该是,但你可能需要单独发送你的列表中的每个元素。

+0

你的意思是创建另一个URL列表吗?你能再解释一下吗? – codenovice

+0

@codenovice,我已经更新了我的答案。请看现在是否清楚。 – Chris

+0

@codenovice,你是否能够使用我提供的解决方案来实现这一目标?如果是这样,请记住[接受](https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)。这会向其他用户显示您找到了解决方案。 – Chris