Member 14123629 Ответов: 1

Извлеките тег изображения и url-адрес из RSS-канала с помощью модуля Python и feedparser


В настоящее время у меня есть этот код в Python с помощью модуля feedparser:



import feedparser

RSS_FEEDS = {'cnn': 'http://rss.cnn.com/rss/edition.rss'}

def get_news_test(publication="cnn"):
    feed = feedparser.parse(RSS_FEEDS[publication])
    articles_cnn = feed['entries']

    for article in articles_cnn:
        print(article)


get_news_test()


Это возвращает следующую информацию (одна итерация):

<item>
            <title>
                <![CDATA[Are China's latest weapons science fiction or battle-ready?]]>
            </title>
            <description>
                <![CDATA[Since the beginning of January, the Chinese military has revealed a dizzying array of sophisticated and powerful new weaponry. ]]>
            </description>
            <link>https://www.cnn.com/2019/01/19/asia/china-new-weapons-2019-intl/index.html</link>
            <guid isPermaLink="true">https://www.cnn.com/2019/01/19/asia/china-new-weapons-2019-intl/index.html</guid>
            <pubDate>Sun, 20 Jan 2019 06:04:16 GMT</pubDate>
            <media:group>
                <media:content medium="image" url="https://cdn.cnn.com/cnnnext/dam/assets/190119113947-china-df-26-missile-beijing-super-169.jpg" height="619" width="1100" />
                <media:content medium="image" url="https://cdn.cnn.com/cnnnext/dam/assets/190119113947-china-df-26-missile-beijing-large-11.jpg" height="300" width="300" />
                <media:content medium="image" url="https://cdn.cnn.com/cnnnext/dam/assets/190119113947-china-df-26-missile-beijing-vertical-large-gallery.jpg" height="552" width="414" />
                <media:content medium="image" url="https://cdn.cnn.com/cnnnext/dam/assets/190119113947-china-df-26-missile-beijing-video-synd-2.jpg" height="480" width="640" />
                <media:content medium="image" url="https://cdn.cnn.com/cnnnext/dam/assets/190119113947-china-df-26-missile-beijing-live-video.jpg" height="324" width="576" />
                <media:content medium="image" url="https://cdn.cnn.com/cnnnext/dam/assets/190119113947-china-df-26-missile-beijing-t1-main.jpg" height="250" width="250" />
                <media:content medium="image" url="https://cdn.cnn.com/cnnnext/dam/assets/190119113947-china-df-26-missile-beijing-vertical-gallery.jpg" height="360" width="270" />
                <media:content medium="image" url="https://cdn.cnn.com/cnnnext/dam/assets/190119113947-china-df-26-missile-beijing-story-body.jpg" height="169" width="300" />
                <media:content medium="image" url="https://cdn.cnn.com/cnnnext/dam/assets/190119113947-china-df-26-missile-beijing-t1-main.jpg" height="250" width="250" />
                <media:content medium="image" url="https://cdn.cnn.com/cnnnext/dam/assets/190119113947-china-df-26-missile-beijing-assign.jpg" height="186" width="248" />
                <media:content medium="image" url="https://cdn.cnn.com/cnnnext/dam/assets/190119113947-china-df-26-missile-beijing-hp-video.jpg" height="144" width="256" />
            </media:group>
        </item>


Я знаю, что могу вернуть некоторые части этого, например, название, позвонив:

print(article.title)


Кто - то сказал, что это данные json, но мне трудно получить индивидуальный тег изображения.

Что я уже пробовал:

Я попытался вызвать "медиа:контент" в качестве ключа, но это не сработало.

1 Ответов

Рейтинг:
0

Richard MacCutchan

Это не JSON, это XML. Видеть Модули обработки XML — документация Python 3.7.2[^].


Member 14123629

Спасибо! Я сделал это и могу получить список URL-адресов изображений, но я все еще не знаю, как добраться до отдельных элементов. :(

из bs4 импортируйте BeautifulSoup
запросы на импорт

источник = запросы.вам('http://rss.cnn.com/rss/edition.rss')

soup = BeautifulSoup(source.text, 'xml')


#СМИ = Средства массовой информации.find_all("URL-адрес")

для url - адреса в soup.find_all("media:content"):
печать(url)

Richard MacCutchan

Извините, но я не знаю BeautifulSoup. Попробуйте поискать пример кода в Google.