Python RSS阅读器文本过滤

0 投票
1 回答
783 浏览
提问于 2025-04-18 15:12

为了更好地学习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.&lt;div class="feedflare"&gt;
&lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=FMi4oVkdS58:sssPw82MBtA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=FMi4oVkdS58:sssPw82MBtA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=FMi4oVkdS58:sssPw82MBtA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=FMi4oVkdS58:sssPw82MBtA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=FMi4oVkdS58:sssPw82MBtA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://rss.cnn.com/~ff/rss/cnn_topstories?a=FMi4oVkdS58:sssPw82MBtA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/rss/cnn_topstories?i=FMi4oVkdS58:sssPw82MBtA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/rss/cnn_topstories/~4/FMi4oVkdS58" height="1" width="1"/&gt;</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]

撰写回答