首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我如何爬行/刮(使用R)的非表环境保护局CompTox仪表板?

我如何爬行/刮(使用R)的非表环境保护局CompTox仪表板?
EN

Stack Overflow用户
提问于 2021-12-07 15:02:06
回答 1查看 103关注 0票数 1

环境保护局的CompTox化学仪表板收到了更新,我的旧代码不再能够刮开沸点的化学物质。有人能帮我刮实验平均沸点吗?我需要能够写一个R代码,可以循环通过几种化学物质。

示例网页:

丙酮:https://comptox.epa.gov/dashboard/chemical/properties/DTXSID8021482

甲烷:https://comptox.epa.gov/dashboard/chemical/properties/DTXSID8025545

我试过read_html()xmlParse(),但没有成功。实验平均沸点(ExpAvBP)值没有显示在XML中。

我尝试过从ContentScraper()中使用RCrawler,但无论我尝试什么,它都只返回NA。此外,这将只适用于所列的第一个网页,因为细胞id随每种化学物质的变化而变化。

代码语言:javascript
复制
ContentScraper(Url="https://comptox.epa.gov/dashboard/chemical/properties/DTXSID8021482", XpathPatterns = "//*[@id='cell-225']")

我尝试过使用readLines(),但是所有的信息都被塞进了最后一个脚本标记中,我不知道如何只隔离ExpAvBP值。它看起来像价值存储在其他地方?例如,下面是我认为是在最后一个脚本标签中的沸点信息。

丙酮:

{unit:c_,名称:“沸点”,预测:{rawData:{rawData,minValue:e,maxValue:e,source:am,description:an,modelName:"TEST_BP",modelId:T,hasOpera:d,globalApplicability:e,hasQmrfPdf:d,详细信息:{rawData:B,rawData showLink:a},qmrf:{value:e,link:e,showLink:d},{value:44.8,minValue:e,maxValue:e,源:ci,描述:cj,modelName:"EPISUITE_BP",modelId:dV,hasOpera:d,globalApplicability:e,hasQmrfPdf:d,详细信息:{value:m,link:e,showLink:d},qmrf:{value:e,link:e,showLink:d},{value:46.458,minValue:e,maxValue:e,source:ad,description:V,modelName:"ACD_BP",ad:135,hasOpera:d,globalApplicability:e,hasQmrfPdf:d,详细信息:{value:m,link:e,e显示链接:d},qmrf:{value:e,link:e,showLink:d},{value:da,minValue:e,maxValue:e,source:aL,modelName:"OPERA_BP",modelId:dS,hasOpera:a,globalApplicability:q,hasQmrfPdf:a,详细信息:{value:B,modelName showLink:a},qmrf:{OPERA_BP:B,link:"http:\u002F\u002Fcomptox-dev.epa.gov\u002Fdashboard\u002Fdsstoxdb\u002Fdownload_qmrf_pdf?model=27",显示链接:a},计数:bu,平均值:47.06289999999999,min:c$,max:da,范围:C$,da,中位数:45.629},实验:{rawData:[{rawData:db,minValue:e,maxValue:e,source:aN,description:aO,experimentalDetails:[]},{value:ak,minValue:ak,maxValue:ak,source:ck,description:cl,experimentalDetails:[]}],{值:ak,minValue:ak,maxValue:ak,来源:ck,description:cl,experimentalDetails:[]},{value:ak,minValue:ak,maxValue:ak,资料来源:“联合国粮食及农业组织”,描述:“粮农组织粮食添加剂联合专家委员会是一个国际专家科学委员会,由联合国粮食及农业组织(粮农组织)和世界卫生组织(世卫组织)共同管理。网站:\u003Ca href="http:\u002F\u002Fwww.fao.org\u002Fhome\u002F“target="_blank"\u003Ehttp:\u002F\u002Fwww.fao.org\u002Fhome\u002F\u003C\u002Fa\u003E",experimentalDetails:[]},{value:56.05,minValue:e,maxValue:e,来源:”Abooali等人“。整型。J.冰箱。2014年,40,282-293“,描述:”Abooali,D.;Sobati,M.A.预测纯制冷剂正常沸点的正常沸点和蒸发焓的新方法: QSPR方法。(\u003Ca href="http:\u002F\u002Fdx.doi.org\u002F10.1016\u002Fj.ijrefrig.2013.12.007“target="_blank"\u003EInt. )J.冰箱。2014年,40,282-293\u002Fa\u003E)\r\n,experimentalDetails:[},{value:bO,minValue:bO,maxValue:bO,来源:hI,description:hJ,experimentalDetails:[]},计数:dK,平均值:55.98518333333333,min:db,max:bO,range:db,bO,中位数:ak},arrKey:"BOILING_POINT"}

甲烷:

{单位:cO,名称:“沸点”,预测:{rawData:{value:at,minValue:f,maxValue:f,源:bb,描述:bb,modelName:"ACD_BP",modelId:135,hasOpera:d,globalApplicability:f,hasQmrfPdf:d,详细信息:{value:ag,link:f,showLink:d},qmrf:{value:f,link:f,showLink:d},{value:hl,minValue:f,maxValue:f,源:aF,描述:ba,modelName:"OPERA_BP",modelId:dv,hasOpera:a,globalApplicability:s,hasQmrfPdf:a,详细信息:{value:O,link:"http:\u002F\u002Fcomptox-dev.epa.gov\u002Fdashboard\u002Fdsstoxdb\u002Fcalculation_details?model_id=27&search=25545",showLink:a},qmrf:{value:O,link:"http:\u002F\u002Fcomptox-dev.epa.gov\u002Fdashboard\u002Fdsstoxdb\u002Fdownload_qmrf_pdf?model=27",showLink:a},{value:cP,minValue:f,maxValue:f,源:bZ,description:b_,modelName:"EPISUITE_BP",modelId:dy,hasOpera:d,globalApplicability:f,hasQmrfPdf:d,详细信息:{value:ag,link:f,showLink:d},qmrf:{value:f,link:f,showLink:d},count:bH,意味着:-129.25300000000001,min:at,max:cP,范围:at,cP,中位数:hl},实验:{rawData:[{rawData:at,minValue:at,maxValue:at,maxValue:hm,description:hn,experimentalDetails:[]},{value:cQ,minValue:f,maxValue:f,源:bC,描述:experimentalDetails:[]],计数:h,平均值:ho,min:at,max:cQ,range:at,cQ,中位数:ho},arrKey:"BOILING_POINT"}

任何帮助或洞察力都将不胜感激!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-07 15:31:35

由于数据没有表格格式,我们必须通过匹配模式BoilingPoint提取文本并提取沸腾温度。

代码语言:javascript
复制
library(rvest)
library(dplyr)
library(RSelenium)
    
 url = 'https://comptox.epa.gov/dashboard/chemical/properties/DTXSID8025545'
driver = rsDriver(browser = c("firefox"))
remDr <- driver[["client"]]
remDr$navigate(url)

df = remDr$getPageSource()[[1]] %>% 
  read_html() %>% html_nodes(xpath = '//*[@id="__layout"]/div/div[5]/div[2]/main/div/div[3]/div[2]/div/div[2]/div[2]/div[3]') %>% 
  html_text()

现在开始煮沸的温度。参考https://stackoverflow.com/a/35936065/12135618

代码语言:javascript
复制
df1 = df %>% str_remove_all( '\n') %>% str_replace_all( ' ', '')
as.numeric(sub(".*?BoilingPoint.*?(\\d+).*", "\\1", df1))
[1] 163

你可能需要做进一步的微调,才能得到沸点的小数点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70262421

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档