【发布时间】:2021-06-05 12:15:47
【问题描述】:
我想从this site 抓取数据,而不会丢失嵌套结构中的信息。考虑名称benodanil,它不仅属于benzanilide fungicides,还属于anilide fungicides 和amide fungicides。不一定总是 3 类,但至少有一个,最多有多个。所以,理想情况下,我想要一个看起来像这样的 data.frame:
| name | class1 | class2 | class3 | ... |
|---|---|---|---|---|
| benodanil | benzanilide fungicides | anilide fungicides | amide fungicides | NA |
| aureofungin | antibiotic fungicides | NA | NA | NA |
| ... | ... | ... | ... |
我可以抓取数据,但不知道如何处理嵌套结构中的信息。到目前为止我尝试了什么:
require(rvest)
url = 'http://www.alanwood.net/pesticides/class_fungicides.html'
site = read_html(url)
# extract lists
li = html_nodes(site, 'li')
# extract unorder lists
ul = html_nodes(site, 'ul')
# loop idea
l = list()
for (i in seq_along(li)) {
li1 = html_nodes(li[i], 'a')
name = na.omit(unique(html_attr(li1, 'href')))
clas = na.omit(unique(html_attr(li1, 'name')))
l[[i]] = list(name = name,
clas = clas)
}
另一个问题是,某些名称出现多次,例如bixafen。因此,我想这项工作必须迭代完成。
【问题讨论】:
标签: html r web-scraping rvest