如何使用R rvest抓取来检索网站的特定元素?

时间:2018-10-09 15:21:37

标签: html r web-scraping rvest

我正在以下网站上寻求有关我正在使用的分子的帮助: chebi_molecule

我想准确地提取此文本(从“角色分类”表中,大约在网页中间):

  

生物作用:   血清素能激动剂   对5-羟色胺受体具有亲和力并能够通过刺激细胞受体的生理活性来模仿5-羟色胺作用的药物。 5-羟色胺激动剂可用作抗抑郁药,抗焦虑药,并用于治疗偏头痛。

     

应用程序:
  血清素能激动剂   对5-羟色胺受体具有亲和力并能够通过刺激细胞受体的生理活性来模仿5-羟色胺作用的药物。 5-羟色胺激动剂可用作抗抑郁药,抗焦虑药,并用于治疗偏头痛。

我试图使用firefox的firebug v2.0.19获取xpath,但是一旦将其粘贴到rvest html_nodes中,就无法检索任何内容。

xpath_bio <- ".//*[@id='content']/table[2]/tbody/tr/td/table[3]/tbody/tr[2]/td[2]/div"

xpath_appl <- ".//*[@id='content']/table[2]/tbody/tr/td/table[3]/tbody/tr[4]/td[2]/div[2]"

当我尝试使用时:

bio <- rvest::read_html(site) %>% html_nodes(xpath = xpath_bio)

我得到一个空值

您能帮我吗?我怎样才能准确地得到那些文本?我到处寻找其他问题,但可以找到很多解决方案。 谢谢。

1 个答案:

答案 0 :(得分:0)

我以前没有使用过rvest,但是您是否尝试过使用检查功能? ctrl+shift+I在Chrome中。我检查了网站上的“生物角色”元素,然后看到了这个html:

<a href="chebiOntology.do;jsessionid=8D8CE11C3CA44298C0BC62921779562B?chebiId=CHEBI:24432" target="_blank">Biological Role</a>

因此,只需使用正则表达式查找字符串"target="_blank">Biological Role"所在的位置,然后查找相应的"class="roleDefinition""字符串。

<div class="roleDefinition">An agent that has an affinity for serotonin receptors and is able to mimic the effects of serotonin by stimulating the physiologic activity at the cell receptors. Serotonin agonists are used as antidepressants, anxiolytics, and in the treatment of migraine disorders.</div>