Изменить элемент <item><description> из Feedparser - PullRequest
0 голосов
/ 23 сентября 2019

Я использую feedparser для обработки RSS-канала от pubmed.

Ссылка на ленту https://eutils.ncbi.nlm.nih.gov/entrez/eutils/erss.cgi?rss_guid=1RGmO3jHeXUu8o2CWPinET6JLLik93hwR2IAJ5mU-YzoPeX1-O

«Аннотация» для каждой статьи в канале скрыта в HTML вэлемент <(description)>, и это резюме, которое я хочу отобразить на веб-странице (используя Django).Все остальные элементы легко доступны для меня.

Я поиграл и написал код ниже, чтобы убрать все, что не включено в реферат, и напечатать его, но даже используя решения, найденные в Stackoverflow, я могуне заменяйте «абстрактную» переменную обратно в исходный словарь фидпарсера.

What exists:

<(item)>
    <(description)> loads of HTML

What I want:

<(item)>
    <(description)> abstract

or:

<(item)>
    <(description)>
    <(abstract)> abstract

Надеюсь, что это имеет смысл.

код:


import feedparser

rss = 'https://eutils.ncbi.nlm.nih.gov/entrez/eutils/erss.cgi?rss_guid=1RGmO3jHeXUu8o2CWPinET6JLLik93hwR2IAJ5mU-YzoPeX1-O'
feed = feedparser.parse(rss)

for post in feed.entries:
    try:
        abstract = (post.description[post.description.index("<p>Abstract<br/>")+len("<p>Abstract<br/>"):post.description.index("</p><p>PMID:")])[:-14]
        print (abstract)
    except ValueError:
        break

FWIW,Вот код для переднего конца:

{% for post in feed.entries %}
<div class="panel panel-default">
    <div class="panel-heading">
        <h4><a href="{{ post.link }}" target="_blank"> {{ post.title }} </a></h4>
        <h5> {{ post.description }} </h5>
        <h5> {{ post.author }}, {{ post.category }} </h5>
    </div>
</div>
{% endfor %}

Большое спасибо за любые советы!

...