Ключевые слова: Entrez NCBI PubMed Python3.7 BeautifulSoup xml
Я хотел бы получить некоторые данные XML из списка опубликованных идентификаторов.Когда я использую URL-адрес, приведенный в качестве примера на веб-сайте Entrez (https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=pubmed&id=10890170&retmode=xml),, данные корректно загружаются в виде XML-файла, но если я хочу автоматизировать поиск, заменив идентификатор переменной (temp_id), текствозвращается, а не XML-файл.
Поэтому я получаю эту ошибку (потому что нет XML-файла с тегами XML)
Traceback (последний вызов был последним): файл "test.py", строка 14, в pub_doi = soup.find (idtype = "doi"). text AttributeError: у объекта 'NoneType' нет атрибута 'text'
from bs4 import BeautifulSoup
import certifi
import urllib3
temp_id=str(10890170)
#efetch_url = 'https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=pubmed&id=10890170&retmode=xml'#this url works
base_url = 'https://eutils.ncbi.nlm.nih.gov/entrez/eutils/'
efetch_url = '%sefetch.fcgi?db=pubmed&id=%s&retmode=xml' % (base_url, temp_id)
try:
http = urllib3.PoolManager()
http = urllib3.PoolManager(cert_reqs='CERT_REQUIRED', ca_certs=certifi.where())
url = efetch_url
results = http.request('GET', url)
soup = BeautifulSoup(results.data,features='xml')
pub_doi = soup.find(idtype="doi").text
pub_abstract = soup.pubmedarticleset.pubmedarticle.article.abstract.abstracttext.text
except (urllib3.exceptions.HTTPError, IOError) as e:
print("ERROR!", e)
else:
pass
По какой-то причине, когда я копирую и вставляюURL в моем браузере, он отображается как текст в Safari, а XML в Chrome.
Я хотел бы получить некоторую помощь, так как подозреваю, что мой URL создан неправильно.