2010-05-19 6 views
3

est-il un moyen d'obtenir le lien de digg à travers son flux rss? ou dois-je obtenir le site Web et le gratter manuellement avec une regex?Grattage digg rss feed avec python

Je veux obtenir le vrai lien vers des points, pas vers le flux de commentaires, à partir de rss.

exemple - http://feeds.digg.com/~r/digg/popular/~3/Hx0VATaafSw/Apple_Scaling_Final_Cut_Studio_Apps_to_Fit_Prosumers_2

va à

http://www.appleinsider.com/articles/10/05/18/apple_scaling_final_cut_studio_apps_to_fit_prosumers.html

Répondre

1

Il semble que vous aurez besoin d'utiliser le digg api pour obtenir les liens réels aux histoires, et non seulement le lien vers les commentaires digg. L'API peut vous donner des données au format XML ou JSON, qui sont facilement gérées en python - lxml et simplejson fonctionnent tous les deux bien. L'autre option, si vous voulez vraiment utiliser les flux RSS, est d'analyser les liens digg et d'enlever les liens de cette page - mais cela sera moins efficace et plus susceptible de se casser. J'ai rencontré ce problème sur des sites d'actualités et de blogs sociaux semblables - en gros, ils veulent que vous atterrissiez sur leur page avant de partir pour lire l'histoire actuelle. Compréhensible, mais plutôt ennuyeux d'un point de vue scripting.

+0

thx, je ne savais pas digg a une API. – Timmy

0

Jetez un oeil à la YQL @ Yahoo ...

Voici une requête qui retourne XML à partir digg

http://developer.yahoo.com/yql/console/?q=select%20title%2Clink%20from%20rss%20where%20url%3D%22http%3A%2F%2Ffeeds.digg.com%2Fdigg%2Fpopular.rss%22

Vous pouvez analyser JSON ou XML.

Bonne chance!

+0

Je devine qu'il veut le lien de l'histoire réelle, pas le lien vers les commentaires digg - donc cela n'a pas vraiment Aidez-moi. – swanson

+0

thx pour l'essai, mais @swanson a raison. – Timmy

3

Jetez un oeil au module feedparser.

>>> import feedparser 
>>> d = feedparser.parse('http://feeds.digg.com/digg/popular.rss') 
>>> for entry in d.entries: 
...  print entry.link 
... 
http://feeds.digg.com/~r/digg/popular/~3/Hx0VATaafSw/Apple_Scaling_Final_Cut_Studio_Apps_to_Fit_Prosumers_2 
http://feeds.digg.com/~r/digg/popular/~3/mXb8b0QH3Rc/Skateboarder_Lives_Any_Man_s_Worst_Nightmare_video 
http://feeds.digg.com/~r/digg/popular/~3/61N9gFUth1k/CBS_A_bloodbath_of_cancellations 
http://feeds.digg.com/~r/digg/popular/~3/vZ3_6F1RAcI/Red_Dead_Redemption_Free_Roam_Done_Right 
(snip) 
2

Vous pouvez utiliser la méthode story.getInfo de l'API Digg. Un de ses arguments possibles est clean_title que vous pouvez analyser à partir du lien dans le flux RSS. Voici un exemple d'implémentation:

import feedparser 
import urllib2 
from xml.etree import ElementTree 

rss_link = 'http://feeds.digg.com/digg/popular.rss' 
api_link = 'http://services.digg.com/1.0/endpoint?method=story.getInfo&clean_title=%s' 

data = feedparser.parse(rss_link) 

for i, e in enumerate(data.entries, 1): 
    print '%d. Digg link: %s' % (i, e.link) 
    title = e.link[e.link.rfind('/') + 1 :] 
    xml = urllib2.urlopen(api_link % title).read() 
    tree = ElementTree.fromstring(xml) 
    print '%d. Real link: %s' % (i, tree.find('story').get('link')) 

... qui sort:

1. Digg link: http://feeds.digg.com/~r/digg/popular/~3/V58R-d7nd2M/Pakistan_court_bans_Facebook_site 
1. Real link: http://news.bbc.co.uk/2/hi/south_asia/8691406.stm 
2. Digg link: http://feeds.digg.com/~r/digg/popular/~3/LoF6h1fTtk/Britons_spend_more_webtime_reading_news_than_looking_at_porn 
2. Real link: http://www.telegraph.co.uk/technology/news/7740500/Britons-spend-more-web-time-reading-news-than-looking-at-pornography.html 
3. Digg link: http://feeds.digg.com/~r/digg/popular/~3/XQUD2tR-qGQ/Sludgy_oil_begins_washing_into_Lousiana_s_coastal_marshes 
3. Real link: http://www.washingtonpost.com/wp-dyn/content/article/2010/05/18/AR2010051801676.html?hpid=topnews 
4. Digg link: http://feeds.digg.com/~r/digg/popular/~3/4HBB7lvCpoM/Professor_examines_the_complex_evolution_of_human_morality 
4. Real link: http://www.physorg.com/news193472479.html 
5. Digg link: http://feeds.digg.com/~r/digg/popular/~3/9__2-MVmSp4/How_Are_America_s_Top_Companies_Taxed_Infographic 
5. Real link: http://www.mint.com/blog/trends/how-are-americas-top-companies-taxed/ 
...