#python #html #bioinformatics #biopython #ncbi
#python #HTML #биоинформатика #biopython #ncbi
Вопрос:
- я пытаюсь извлечь только формат fasta «NM_213035.1», и на выходе получается вся страница, кроме fasta.
- проверяемая часть 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