为R脚本标识URL的正确CSS选择器

时间:2016-04-19 19:23:40

标签: css r web-scraping rvest httr

我正在尝试从网站获取数据,并且感谢帮助我可以访问以下脚本:

require(httr)
require(rvest)
      res <- httr::POST(url = "http://apps.kew.org/wcsp/advsearch.do", 
                    body = list(page = "advancedSearch", 
                                AttachmentExist = "", 
                                family = "", 
                                placeOfPub = "", 
                                genus =      "Arctodupontia", 
                                yearPublished = "", 
                                species ="scleroclada", 
                                author = "", 
                                infraRank = "", 
                                infraEpithet = "", 
                                selectedLevel = "cont"), 
                    encode = "form") 
  pg <- content(res, as="parsed")
  lnks <- html_attr(html_node(pg,"td"), "href")

但是,在某些情况下,如上例所示,它不会检索正确的链接,因为由于某种原因,html_attr在html_node检测到的节点内找不到网址(&#34; href&#34;)。到目前为止,我已经尝试了不同的CSS选择器,例如&#34; td&#34;,&#34; a.onwardnav&#34;和&#34; .plantname&#34;但它们都没有生成html_attr可以正确处理的对象。 任何提示?

1 个答案:

答案 0 :(得分:0)

你真的很接近你想要的答案。如果您想从所需页面中拉出链接,那么:

lnks <- html_attr(html_nodes(pg,"a"), "href") 

将返回&#34; a&#34;的所有链接列表。用&#34; href&#34;标记属性。请注意,该命令是html_nodes而不是节点。有多个&#34; a&#34;因此复数标记 如果您正在寻找正文中表格中的信息,请尝试以下方法:

html_table(pg, fill=TRUE)
#or this
html_nodes(pg,"tr")

第二行将返回表中9行的列表,然后可以解析这些行以获取行名称(&#34; th&#34;)和/或行值(&#34; td&#34 )
。 希望这会有所帮助。