Python RSS阅读器文本过滤
为了更好地学习python 3.4,我决定做一个“实用”的程序,这个程序可以读取你给定链接的RSS源。我在测试CNN的RSS源时,成功打印出了描述,但描述里有很多我不需要的“废话”。有没有简单的方法可以去掉这些多余的文字?基本上,我想保留这句话:“一项以NBA创纪录价格出售洛杉矶快船的交易可能会推进,加州的一位遗嘱法官周一裁定。”,其他的都想去掉。谢谢。
完整的RSS标签:
<description>A deal to sell the Los Angeles Clippers for an NBA record price may move forward, a California probate judge ruled Monday.<div class="feedflare">
<a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=FMi4oVkdS58:sssPw82MBtA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=FMi4oVkdS58:sssPw82MBtA:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=FMi4oVkdS58:sssPw82MBtA:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=FMi4oVkdS58:sssPw82MBtA:V_sGLiPBpWU" border="0"></img></a> <a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=FMi4oVkdS58:sssPw82MBtA:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"></img></a> <a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=FMi4oVkdS58:sssPw82MBtA:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=FMi4oVkdS58:sssPw82MBtA:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/FMi4oVkdS58" height="1" width="1"/></description>
1 个回答
0
你问:“有没有快速的方法?”也许有。
首先,看看你实际得到了什么。你可以把你给我们的那段文本完整复制,然后用这个在线HTML解码器来处理一下:
http://www.opinionatedgeek.com/DotNet/Tools/HTMLEncode/Decode.aspx
这样你就能大概了解你在处理什么。你需要解码文本,让它看起来像正常的HTML。然后你会发现,在description
标签里面,有一个div
标签和一个img
标签,紧跟着你感兴趣的文本。如果你认为这就是你从数据源中一贯得到的内容,那么你可以安全地抓取<div>
之前的所有内容,把后面的丢掉。
看看这个关于解码HTML的回答:
https://stackoverflow.com/a/2087433/155167
一旦你解码了HTML,可能只需要使用string
对象的find
方法就可以了。
# Assume text is decoded HTML, so the <div> looks like a normal tag.
start = len('<description>')
end = text.find('<div>')
text = text[start: end]