1

要素""の最初のインスタンスのRSSフィードを解析しようとしています。

def pageReader(url):
try:
    readPage = urllib2.urlopen(url)
except urllib2.URLError, e:
#   print 'We failed to reach a server.'
#   print 'Reason: ', e.reason
    return 404  
except urllib2.HTTPError, e:
#   print('The server couldn\'t fulfill the request.')
#   print('Error code: ', e.code)   
    return 404  
else:
    outputPage = readPage.read()        
return outputPage

渡される引数が正しいと仮定します。この関数は、値が単にrssフィード全体であるstrオブジェクトを返します-タイプを次のように確認しました:

a = isinstance(value, str)
if not a:
   return -1

したがって、rssフィード全体が関数呼び出しから返されました。この時点で、レンガの壁にぶつかりました。BeautifulSoup、lxml、およびその他のさまざまなライブラリを使用してフィードを解析しようとしましたが、成功しませんでした( BeautifulSoupである程度成功しました。しかし、たとえば、親から特定の子要素を引き出すことができませんでした。私は自分のパーサーを作成する準備ができていますが、誰かが何か提案があるかどうか知りたいです。

エラーを再現するには、次のような引数を使用して上記の関数を呼び出すだけです。

http://www.cert.org/nav/cert_announcements.rss

あなたは私が最初の子供を返そうとしているのを見るでしょう。

<item>
<title>New Blog Entry: Common Sense Guide to Mitigating Insider Threats - Best Practice 16 (of 19)</title>
<link>http://www.cert.org/blogs/insider_threat/2013/02/common_sense_guide_to_mitigating_insider_threats_-_best_practice_16_of_19.html</link>
<description>This sixteenth of 19 blog posts about the fourth edition of the Common   Sense Guide to Mitigating Insider Threats describes Practice 16: Develop a formalized insider threat program.</description>
<pubDate>Wed, 06 Feb 2013 06:38:07 -0500</pubDate>
</item>

私が言ったように、BeautifulSoupは私のアプリにとって重要なpubDateとLinkの両方を見つけることができません。

アドバイスをいただければ幸いです。

4

1 に答える 1

1

BeautifulStoneSoupを使用し、次のように小文字のタグを渡すことに成功しました。

from BeautifulSoup import BeautifulStoneSoup
xml = '<item><title>New Blog Entry: Common Sense Guide to Mitigating Insider Threats - Best Practice 16 (of 19)</title><link>http://www.cert.org/blogs/insider_threat/2013/02/common_sense_guide_to_mitigating_insider_threats_-_best_practice_16_of_19.html</link><description>This sixteenth of 19 blog posts about the fourth edition of the Common   Sense Guide to Mitigating Insider Threats describes Practice 16: Develop a formalized insider threat program.</description><pubDate>Wed, 06 Feb 2013 06:38:07 -0500</pubDate></item>'


soup = BeautifulStoneSoup(xml)
item = soup('item')[0]
print item('pubdate'), item('link')
于 2013-02-07T20:45:29.237 に答える