Я использую 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 %}
Большое спасибо за любые советы!