2017-04-16 128 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