对于一个项目,我想从KeGG网站上的许多途径中提取所有化合物名称。单一生物中所有途径的清单看起来像this。对于每种途径,我都提取名称并存储描述。然后,我想获得在该途径中起作用的所有化合物。关于KeGG途径的所有已知知识都可以在this之类的网站上找到。我要提取的元素是COMPOUND下列出的元素。
基本上,我有一组URL和一个非常具体的正则表达式,我想从每个URL中提取它们。我的问题是:什么是最好的/最少的行数/最简单的多线程网络爬网工具,可以快速完成此任务?
下面列出了我当前的工作解决方案。我应该去看看scrapy(对于没有URL集的项目来说,更多)还是我自己对线程进行了处理?
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()
答案 0 :(得分:0)
import requests
listed = requests.get('http://rest.kegg.jp/list/pathway/')
listed = listed.text.split('\n') # Remove the last one which is empty
for l in listed:
result = requests.get('http://rest.kegg.jp/get/{}'.format(l.split('\t')[0])
#do_thing_with_result_here(result)
print(result.text)
其中显示: ENTRY map00010途径 名称糖酵解/糖异生 描述糖酵解是最重要的... .......
其余途径,我将不在此处复制。