قراءة مجموعات من تمديد العناصر في تغذية RSS مع العالمي تغذية محلل

StackOverflow https://stackoverflow.com/questions/241503

  •  04-07-2019
  •  | 
  •  

سؤال

هل هناك أي طريقة لقراءة مجموعة من العناصر مع تمديد العالمي تغذية محلل?

هذا هو مجرد مقتطف قصير من Kuler تغذية RSS:

<channel>
  <item>
    <!-- snip: regular RSS elements -->
    <kuler:themeItem>
      <kuler:themeID>123456</kuler:themeID>
      <!-- snip -->
      <kuler:themeSwatches>
        <kuler:swatch>
          <kuler:swatchHexColor>FFFFFF</kuler:swatchHexColor>
          <!-- snip -->
        </kuler:swatch>
        <kuler:swatch>
          <kuler:swatchHexColor>000000</kuler:swatchHexColor>
          <!-- snip -->
        </kuler:swatch>
      </kuler:themeSwatches>
    </kuler:themeItem>
  </item>
</channel>

حاولت التالية:

>>> feed = feedparser.parse(url)
>>> feed.channel.title
u'kuler highest rated themes'
>>> feed.entries[0].title
u'Foobar'
>>> feed.entries[0].kuler_themeid
u'123456'
>>> feed.entries[0].kuler_swatch
u''

feed.entries[0].kuler_swatchhexcolor يعود الماضي فقط kuler:swatchHexColor.هل هناك أي طريقة لاسترداد جميع العناصر مع feedparser?

كنت قد عملت بالفعل حول المشكلة باستخدام مينيدوم ، ولكن أود أن استخدام العالمي تغذية محلل إذا كان ذلك ممكنا (بسبب بسيط جدا API).يمكن تمديد ؟ لم أجد أي شيء عن ذلك في الوثائق ، حتى إذا كان شخص ما لديه المزيد من الخبرة مع المكتبة, من فضلك, تقديم المشورة لي.

هل كانت مفيدة؟

المحلول

العالمي تغذية محلل لطيف معظم الأعلاف ، ولكن من أجل تمديد يغذي قد ترغب في محاولة شيء يسمى BeautifulSoup.إنه XML/HTML/XHTML تحليل المكتبة التي هي في الأصل مصممة screenscraping;تبين أيضا رائعة لهذا النوع من الشيء.الوثائق هو جيد جدا, و يوجد به شرح API, حتى إذا كنت تفكر في استخدام أي شيء آخر, هذا ما أود أن أوصى.

كنت على الأرجح استخدام مثل هذا:

>>> import BeautifulSoup
>>> import urllib2

# Fetch HTML data from url
>>> connection = urllib2.urlopen('http://kuler.adobe.com/path/to/rss.xml')
>>> html_data = connection.read()
>>> connection.close()

# Create and search the soup
>>> soup = BeautifulSoup.BeautifulSoup(html_data)
>>> themes = soup.findAll('kuler:themeitem') # Note: all lower-case element names

# Get the ID of the first theme
>>> themes[0].find('kuler:themeid').contents[0]
u'123456'

# Get an ordered list of the hex colors for the first theme
>>> themeswatches = themes[0].find('kuler:themeswatches')
>>> colors = [color.contents[0] for color in
... themeswatches.findAll('kuler:swatchhexcolor')]
>>> colors
[u'FFFFFF', u'000000']

لذا ربما يمكنك الحصول على فكرة أن هذا هو بارد جدا المكتبة.لن تكون جيدة جدا إذا كنت تحليل أي تغذية RSS, ولكن لأن البيانات من Adobe Kuler, يمكنك أن تكون متأكد من أنه لن تختلف بما يكفي لكسر التطبيق الخاص بك (أي ، انها موثوق بما فيه الكفاية المصدر).

والأسوأ من ذلك هو محاولة تحليل أدوبي اللعين .بورصة عمان تنسيق.حاولت كتابة محلل و حصلت مروعة حقا ، حقا بسرعة.Ug.لذا, نعم, آر إس إس هي على الأرجح أسهل طريقة التواصل مع Kuler.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top