Для проекта я хотел бы извлечь все составные имена из многих путей на веб-сайте KeGG.Список всех путей в одном организме выглядит как это .Для каждого пути я извлекаю имя и сохраняю описание.Тогда я хотел бы получить все соединения, которые играют роль на этом пути.Все, что известно о пути KeGG, можно найти на веб-сайте, например this .Элементы, которые я хотел бы извлечь, перечислены в разделе СОЕДИНЕНИЕ.
По сути, у меня есть набор URL-адресов и очень специфическое регулярное выражение, которое я хотел бы извлечь из каждого URL-адреса.Мой вопрос: что является лучшим / наименьшим количеством строк / самым легким многопоточным инструментом веб-сканирования для быстрого выполнения этого?
Мое действующее рабочее решение указано ниже.Должен ли я пойти посмотреть на scrapy (что больше подходит для проектов, в которых у вас нет набора URL) или лучше сделать что-нибудь с помощью threading самостоятельно?
import pandas as pd
import urllib
from io import StringIO
import re
def get_KeGG_pathways_cpds(organism = 'eco'):
orgURL = 'http://rest.kegg.jp/list/pathway/'
orgStr = urllib.request.urlopen(orgURL + organism).read().decode('utf-8')
orgIO = StringIO(orgStr)
orgDf = pd.read_csv(orgIO, sep='\t', names = ['pway', 'description'])
pathURL = 'http://rest.kegg.jp/get/'
for pway in orgDf.pway:
pathStr = urllib.request.urlopen(pathURL + pway).read().decode('utf-8')
compounds = re.findall('(C[0-9]{5})', pathStr)
print(compounds)
print('-------------------------\n')
return
get_KeGG_pathways_cpds()