首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用python抓取digg rss提要

使用python抓取digg rss提要
EN

Stack Overflow用户
提问于 2010-05-19 23:28:11
回答 4查看 900关注 0票数 3

有没有办法通过digg的rss feed从digg获取链接?或者我必须获取网站并使用正则表达式手动抓取它?

我想从rss获取digg指向的真正链接,而不是评论提要。

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

转到

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-05-20 00:01:18

看起来您需要使用Digg API来获取故事的实际链接,而不仅仅是digg评论的链接。API可以为您提供XML或JSON格式的数据,这两种格式在python中都很容易处理-- lxmlsimplejson都能很好地工作。

如果您真的热衷于使用RSS提要,另一种选择是解析digg链接,然后从该页面上刮掉链接--但这种方法效率较低,而且更容易断开。

我在类似的社会新闻和博客网站上遇到过这个问题--基本上,他们希望你在阅读实际故事之前先登陆他们的页面。可以理解,但从脚本的角度来看有点恼人。

票数 1
EN

Stack Overflow用户

发布于 2010-05-19 23:39:59

看一下feedparser模块。

代码语言:javascript
运行
复制
>>> 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)
票数 3
EN

Stack Overflow用户

发布于 2010-05-20 00:27:54

您可以使用Digg API的story.getInfo方法。它可能的参数之一是clean_title,您可以从RSS feed中的链接解析它。下面是一个示例实现:

代码语言:javascript
运行
复制
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'))

..。以下哪项输出:

代码语言:javascript
运行
复制
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/
...
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2866939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档