我当前的R脚本根据给定的Chemspider id解析来自http://www.chemspider.com的化学同义词名称,在本例中为"Irganox 1076"(取自抓取实验测量的物理化学性质和R中的Chemspider的同义词的代码):
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的初始结果。http://www.chemspider.com网站显示了一个扩展列表,一旦你手动点击"more…"按钮,就会有更多的同义词。
问题:如何修改脚本,使脚本的结果包含同义词的扩展列表?
这似乎工作得相当好
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]]))
对不起,不是很熟悉R,但为了从ChemSpider中提取任何信息,最好使用REST API然后解析网页:http://parts.chemspider.com/json.ashx
例如,为了获得与阿司匹林相关的所有同义词,您可以这样做:http://parts.chemspider.com/JSON.ashx?op=GetRecordsAsCompounds&csids[0]=2157&serfilter=Compound[同义词]或http://parts.chemspider.com/JSON.ashx?op=GetRecordsAsCompounds&csids[0]=2157以获得有关指定化合物的所有信息