यूनिवर्सल फीड पार्सर - पायथन, पार्सिंग, फ़ीड, फीड के साथ तारीख हो रही समस्या

ऐसा लग रहा है http://portland.beerandblog.com/feed/atom/ गड़बड़ है (जैसा कि 0.92 और 2.0 आरएसएस फ़ीड हैं)।

यूनिवर्सल फीड पार्सर (से नवीनतम संस्करण http://code.google.com/p/feedparser/source/browse/trunk/feedparser/feedparser.py?spec=svn295&r=295 ) किसी भी तारीख को नहीं देखता है।

    <title>Beer and Blog Portland</title>
<atom:link href="http://portland.beerandblog.com/feed/" rel="self" type="application/rss+xml" />
<link>http://portland.beerandblog.com</link>
<description>Bloggers helping bloggers over beers in Portland, Oregon</description>
<pubDate>Fri, 19 Jun 2009 22:54:57 +0000</pubDate>
<generator>http://wordpress.org/?v=2.7.1</generator>
<language>en</language>
<sy:updatePeriod>hourly</sy:updatePeriod>
<sy:updateFrequency>1</sy:updateFrequency>
<item>
<title>Widmer is sponsoring our beer for the After Party!!</title>
<link>http://portland.beerandblog.com/2009/06/19/widmer-is-sponsoring-our-beer-for-the-after-party/</link>
<comments>http://portland.beerandblog.com/2009/06/19/widmer-is-sponsoring-our-beer-for-the-after-party/#comments</comments>
<pubDate>Fri, 19 Jun 2009 22:30:35 +0000</pubDate>
<dc:creator>Justin Kistner</dc:creator>

<category><![CDATA[beer]]></category>

मैं कोशिश कर रहा हूँ

प्रयत्न:
प्रकाशित = e.published_parsed
के सिवाय:
प्रयत्न:
प्रकाशित = e.updated_parsed
के सिवाय:
प्रकाशित = e.created_parsed

और यह विफल हो रहा है क्योंकि मुझे तारीख नहीं मिल सकती है।

उचित तरीके से तारीख निकालने के बारे में कोई विचार?

धन्यवाद!

उत्तर:

जवाब के लिए 3 № 1

मेरे लिये कार्य करता है:

>>> e = feedparser.parse("http://portland.beerandblog.com/feed/atom/")
>>> e.feed.date
u"2009-06-19T22:54:57Z"
>>> e.feed.date_parsed
(2009, 6, 19, 22, 54, 57, 4, 170, 0)
>>> e.feed.updated_parsed
(2009, 6, 19, 22, 54, 57, 4, 170, 0)

शायद आप "देख रहे हैं e.updated_parsed जहाँ आपको ढूंढना चाहिए e.feed.updated_parsed बजाय?


उत्तर № 2 के लिए 1

नग्न का उपयोग करना except आपके कोड में कोई समस्या हो सकती है। मान लेना (I don "t use feed parsers) कि AttributeError वह विशिष्ट अपवाद है जिसकी आपको जाँच करनी चाहिए, (आकस्मिक सजा) यह:

try:
published = e.published_parsed
except AttributeError:
try:
published = e.updated_parsed
except AttributeError:
published = e.created_parsed

किसी भी स्थिति में, "यह" विफल होने के बजाय, कृपया त्रुटि संदेश और ट्रेसबैक दिखाएं।

संपादित करें मैंने नवीनतम रिलीज़ (यानी svn से नहीं) डाउनलोड किया है और इस परिणाम के साथ डॉक्स में उदाहरण का अनुसरण किया है:

C:feedparser>python26python
Python 2.6.2 (r262:71605, Apr 14 2009, 22:40:02) [MSC v.1500 32 bit (Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import feedparser
>>> d = feedparser.parse("http://portland.beerandblog.com/feed/atom/")
>>> d.entries[0].updated
u"2009-06-19T22:54:57Z"
>>> d.entries[0].updated_parsed
time.struct_time(tm_year=2009, tm_mon=6, tm_mday=19, tm_hour=22, tm_min=54, tm_sec=57, tm_wday=4, tm_yday=170, tm_isdst=0)
>>> d.entries[0].title
u"Widmer is sponsoring our beer for the After Party!!"
>>> d.entries[0].published
u"2009-06-19T22:30:35Z"
>>> d.entries[0].published_parsed
time.struct_time(tm_year=2009, tm_mon=6, tm_mday=19, tm_hour=22, tm_min=30, tm_sec=35, tm_wday=4, tm_yday=170, tm_isdst=0)
>>>

जैसा कि मैंने कहा, मैं RSS और परमाणुओं और इस तरह का नहीं हूँ, लेकिन यह मुझे बहुत सीधा लगता है। सिवाय इसके कि मैं "डॉन" नहीं समझता कि आप कहाँ मिल रहे हैं। <pubDate> टैग और arpanet- शैली टाइमस्टैम्प से; AFAICT जो कच्चे स्रोत में मौजूद नहीं है - इसके पास है <published> और आईएसओ टाइमस्टैम्प:

>>> import urllib
>>> guff = urllib.urlopen("http://portland.beerandblog.com/feed/atom/").read()
>>> guff.find("pubDate")
-1
>>> guff.find("published")
1171
>>> guff[1160:1200]
"pdated>ntt<published>2009-06-19T22:30:35"
>>>

"E.published_parsed" में आपका "e" क्या है? फीडरसर तक पहुंचने के साथ पूरी कहानी दिखाने पर विचार करें, जैसा कि मैंने ऊपर किया था।


संबंधित सवाल
सबसे लोकप्रिय