从Chemspider用R检索化学同义词

时间:2014-08-21 18:23:17

标签: xml r web-scraping

我当前的R脚本根据给定的Chemspider id解析来自http://www.chemspider.com的化学同义词名称,在本例中为" Irganox 1076" (代码取自Scraping experimentally measured physicochemical properties and synonyms from Chemspider in R):

library(XML)
csid     <- "15539" 
url      <- paste0("http://www.chemspider.com/Chemical-Structure.",csid,".html")
doc      <- htmlTreeParse(url,useInternal=T)
synNodes <- getNodeSet(doc,'//div[@id="synonymsTab"]/div/div/div/p[@class="syn"]')
synonyms <- sapply(synNodes,function(x)xmlValue(getNodeSet(x,"./strong")[[1]]))
synonyms

结果:

[1] "3-[4-Hydroxy-3,5-bis(2-méthyl-2-propanyl)phényl]propanoate d'octadécyle"    "benzenepropanoic acid, 3,5-bis(1,1-dimethylethyl)-4-hydroxy-, octadecyl ester"
 [3] "Octadecyl 3-(3,5-di-tert-butyl-4-hydroxyphenyl)propanoate"                     "Octadecyl 3-(3,5-di-tert-butyl-4-hydroxyphenyl)propionate"                    
 [5] "Octadecyl 3,5-di-t-butyl-4-hydroxyhydrocinnamate"                              "Octadecyl 3,5-di-tert-butyl-4-hydroxyhydrocinnamate"                          
 [7] "octadecyl 3-[3,5-bis(tert-butyl)-4-hydroxyphenyl]propanoate"                   "Octadecyl 3-[4-hydroxy-3,5-bis(2-methyl-2-propanyl)phenyl]propanoate"         
 [9] "Octadecyl-3-(3,5-di-tert.butyl-4-hydroxyphenyl)-propionate"                    "Octadecyl-3-[4-hydroxy-3,5-bis(2-methyl-2-propanyl)phenyl]propanoat"

问题: 不幸的是,脚本只显示了Chemspider的初步结果。一旦您手动点击&#34;更多...&#34; http://www.chemspider.com网站会显示包含更多同义词的扩展列表。按钮。

问题: 如何修改脚本以使脚本的结果包含扩展的同义词列表。

2 个答案:

答案 0 :(得分:2)

这似乎运作得相当好

library(XML)
csid     <- "15539" 
url      <- paste0("http://www.chemspider.com/Chemical-Structure.",csid,".html")
doc      <- htmlTreeParse(url,useInternal=T)
synNodes <- getNodeSet(doc,'//div[@id="synonymsTab"]//p[@class="syn"]')
synonyms <- sapply(synNodes,function(x)xmlValue(getNodeSet(x,"./*[1]")[[1]]))

答案 1 :(得分:1)

抱歉,对R不太熟悉,但为了从ChemSpider中提取任何信息,使用REST API然后解析网页要好得多:http://parts.chemspider.com/json.ashx

例如,为了获得与阿司匹林相关的所有同义词,您可以执行以下操作:http://parts.chemspider.com/JSON.ashx?op=GetRecordsAsCompounds&csids[0]=2157&serfilter=Compound[Synonyms]或此http://parts.chemspider.com/JSON.ashx?op=GetRecordsAsCompounds&csids[0]=2157以获取有关指定化合物的所有信息。