Извлечение определенных данных Fasta с веб-страницы NCBI

#python #html #bioinformatics #biopython #ncbi

#python #HTML #биоинформатика #biopython #ncbi

Вопрос:

  1. я пытаюсь извлечь только формат fasta «NM_213035.1», и на выходе получается вся страница, кроме fasta.
  2. проверяемая часть fasta существует в теге <pre .

код:

 import bs4
import sys
from bs4 import BeautifulSoup
import requests

url = requests.get("https://www.ncbi.nlm.nih.gov/nuccore/{FASTA}?report=fasta".format(FASTA="NM_213035.1"))
url.raise_for_status()
ncbi = bs4.BeautifulSoup(url.text, "html.parser")

filename = ncbi.title.text
with open(filename, 'w ') as f:
    for i in ncbi.select('p'):
        f.write(i.getText())
 

вывод:

Предупреждение: для работы веб-сайта NCBI требуется JavaScript. Еще… Функции загрузки.Загрузите функции gene.Ссылочная последовательность NCBI: NM_213035.1

Графика GenBank

Целая последовательность

Выбранный регион

От:

Для:

Показать обратное дополнение

Показать функции gap Ваша активность в браузере пуста.Запись активности отключена. Снова включите запись

Национальный центр биотехнологической информации, Национальная медицинская библиотека США

8600 Роквилл Пайк, Бетесда, Мэриленд, 20894 США

Комментарии:

1. Распространенным методом для веб-сайтов для предотвращения веб-скрапперов является динамическая загрузка содержимого с помощью Javascript. Следование протоколу сбора данных NCBI должно предотвратить эти проблемы: ncbi.nlm.nih.gov/books/NBK25497

Ответ №1:

Вы не используете правильный URL-адрес для извлечения файлов FASTA через REST API. Как указал @Ghoti, правильные URL-адреса описаны здесь: https://www.ncbi.nlm.nih.gov/books/NBK25497 /

Для вашей конкретной проблемы это будет:

 https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=nuccoreamp;id=NM_213035.1amp;rettype=fastaamp;retmode=text
 

Если вы используете Python, вы можете использовать Biotite для этой задачи, пакет, который я разрабатываю: https://www.biotite-python.org/apidoc/biotite.database.entrez.fetch.html