Модуль Biopython Entrez EFetch выдает ошибку HTTP 400: неверный запросPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Модуль Biopython Entrez EFetch выдает ошибку HTTP 400: неверный запрос

Сообщение Anonymous »

Модуль EFetch Biopython Entrez выдает ошибку HTTP 400: неверный запрос
Я пытаюсь получить атрибуты статьи PubMed через PMID, но когда я использую метод EFetch, как показано ниже, я получаю ошибку - Ошибка HTTP 400: неверный запрос.
Метод исследования работает и не выдает никаких ошибок, но когда я использую метод EFetch для извлечения других атрибутов путем итерации по PMID, я получаю ошибка. Время от времени это удается, но в большинстве случаев терпит неудачу. Я тоже пробовал использовать метод сна, и все равно.
Entrez.email = "[email protected]"
Entrez.api_key = "api_key_generated_from_NCBI"

def fetch_pub_data(pmid):
# Fetch PubMed record in XML format
handle = Entrez.efetch(db="pubmed", id=pmid, retmode="xml", api_key="api_key_generated_from_NCBI")
record = Entrez.read(handle, validate=False)
handle.close()
try:
# Extract publication date
pub_date = record['PubmedArticle'][0]['MedlineCitation']['Article']['Journal']['JournalIssue']['PubDate']
except (KeyError, IndexError):
publication_date = "No Publication date available"
try:
abstract_text = record['PubmedArticle'][0]['MedlineCitation']['Article']['Abstract']['AbstractText']
except (KeyError, IndexError):
abstract_text = "No abstract available"
try:
title = record['PubmedArticle'][0]['MedlineCitation']['Article']['ArticleTitle']
except (KeyError, IndexError):
title = "No Title available"
return publication_date, abstract_text, title

def search_pubmed(query, retmax=10):
handle = Entrez.esearch(db="pubmed", term=query, sort='relevance', retmax=retmax, api_key="api_key_generated_from_NCBI")
search_results = Entrez.read(handle)
pubmed_ids = search_results["IdList"]

# Create an empty DataFrame to store the results
df = pd.DataFrame(columns=['PubMed_ID', 'Publication_Date', 'Title', 'Abstract'])

# Fetch and store information for the retrieved PubMed IDs in the DataFrame
for pmid in pubmed_ids:
pub_date, abstract, title = fetch_pub_data(pmid)
new_row_data = {'PubMed_ID': pmid, 'Publication_Date': pub_date, 'Title': title, 'Abstract': abstract}
num_rows = len(df)
df.loc[num_rows] = new_row_data
time.sleep(5)
return df

# search query
search_term = ('((2024/1/1:2024/1/31[pdat]))')

# Search PubMed and fetch PubMed IDs with their respective publication dates and abstracts
results= search_pubmed(search_term, retmax=10)
print(results)


Это ошибка, которую я получаю при выполнении этого кода
in fetch_pub_data(pmid)
---> 12 handle = Entrez.efetch(db="pubmed", id=pmid, retmode="xml", api_key="#################")
13 record = Entrez.read(handle, validate=False)

~/.local/lib/python3.8/site-packages/Bio/Entrez/__init__.py in efetch(db, **keywords)
194 variables.update(keywords)
195 request = _build_request(cgi, variables)
--> 196 return _open(request)
197
198

~/.local/lib/python3.8/site-packages/Bio/Entrez/__init__.py in _open(request)
592 for i in range(max_tries):
593 try:
--> 594 handle = urlopen(request)
595 except HTTPError as exception:
596 # Reraise if the final try fails

/mmm/jupyterhub/anaconda3/lib/python3.8/urllib/request.py in urlopen(url, data, timeout, cafile, capath, cadefault, context)
220 else:
221 opener = _opener
--> 222 return opener.open(url, data, timeout)
223
224 def install_opener(opener):

/mmm/jupyterhub/anaconda3/lib/python3.8/urllib/request.py in open(self, fullurl, data, timeout)
529 for processor in self.process_response.get(protocol, []):
530 meth = getattr(processor, meth_name)
--> 531 response = meth(req, response)
532
533 return response

/mmm/jupyterhub/anaconda3/lib/python3.8/urllib/request.py in http_response(self, request, response)
638 # request was successfully received, understood, and accepted.
639 if not (200 640 response = self.parent.error(
641 'http', request, response, code, msg, hdrs)
642

/mmm/jupyterhub/anaconda3/lib/python3.8/urllib/request.py in error(self, proto, *args)
567 if http_err:
568 args = (dict, 'default', 'http_error_default') + orig_args
--> 569 return self._call_chain(*args)
570
571 # XXX probably also want an abstract factory that knows when it makes

/mmm/jupyterhub/anaconda3/lib/python3.8/urllib/request.py in _call_chain(self, chain, kind, meth_name, *args)
500 for handler in handlers:
501 func = getattr(handler, meth_name)
--> 502 result = func(*args)
503 if result is not None:
504 return result

/mmm/jupyterhub/anaconda3/lib/python3.8/urllib/request.py in http_error_default(self, req, fp, code, msg, hdrs)
647 class HTTPDefaultErrorHandler(BaseHandler):
648 def http_error_default(self, req, fp, code, msg, hdrs):
--> 649 raise HTTPError(req.full_url, code, msg, hdrs, fp)
650
651 class HTTPRedirectHandler(BaseHandler):

HTTPError: HTTP Error 400: Bad Request```



Подробнее здесь: https://stackoverflow.com/questions/790 ... ad-request
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Модуль Biopython Entrez EFetch выдает ошибку HTTP 400: неверный запрос
    Anonymous » » в форуме Python
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Неверный запрос HTTP 400 – неверный заголовок при модернизации на Android
    Anonymous » » в форуме Android
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • HttpWebRequest.GetResponse() выдает ошибку 400 «Неверный запрос»
    Anonymous » » в форуме C#
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Передача зашифрованной строки как nsdata в теле http дает ошибку 400 неверный запрос
    Anonymous » » в форуме IOS
    0 Ответы
    45 Просмотры
    Последнее сообщение Anonymous
  • Как устранить ошибку HTTP 400: неверный запрос в PyTube?
    Anonymous » » в форуме Python
    0 Ответы
    33 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»