从许多KeGG途径文献中提取化合物名称

时间:2018-10-08 12:33:25

标签: python web-scraping scrapy web-crawler urllib

对于一个项目,我想从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()

1 个答案:

答案 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途径 名称糖酵解/糖异生 描述糖酵解是最重要的... .......

其余途径,我将不在此处复制。