gpt4 book ai didi

rvest:处理不同数量的嵌套类

转载 作者:行者123 更新时间:2023-12-04 10:22:25 28 4
gpt4 key购买 nike

我不确定如何描述问题,因此我将直接进入示例。
我有一个 HTML 文档( html_doc ),如下所示:

<div class="main">
<h2>A</h2>
<div class="route">
X<br />
</div>
<div class="route">
Y<br />
</div>
</div>
<div class="main">
<h2>B</h2>
<div class="route">
Z<br />
</div>
</div>

每个内部 main , 旁边还有更多元素 titleroute所以我正在寻找一个可扩展的解决方案。 main 中的类(class)总是一样的。
我想要一个看起来像的小标题:
id | title | route
1 | A | X
1 | A | Y
2 | B | Z

我当前的尝试给了我错误,因为 title 中的行数不同和 route .我也不知道如何索引类 main .
tibble(
title = html_doc %>% html_nodes("h2") %>% html_text(),
route = html_doc %>% html_nodes(".route") %>% html_text()
)

最佳答案

这遵循与您之前的问题类似的策略。诀窍是遍历每个子节点,创建标题和路由的单独 data.frame,然后将所有单独的 dataframe 组合到最终结果中。
此解决方案确实取决于每个节点只有 1 个标题。

library(rvest)
library(dplyr)

page<-read_html('<<div class="main">
<h2>A</h2>
<div class="route">
X<br />
</div>
<div class="route">
Y<br />
</div>
</div>
<div class="main">
<h2>B</h2>
<div class="route">
Z<br />
</div>
</div>')

#find all of the parent nodes
mainnodes <- page %>% html_nodes("div.main")

#loop through each parent node and extract the info from the children
dfs<-lapply(1:length(mainnodes), function(id){
#assume a single title node or same number as routes
title <- mainnodes[id] %>% html_nodes("h2") %>% html_text() %>% trimws()
#Count the number of img nodes per parent.
route <- mainnodes[id] %>% html_nodes("div.route") %>% html_text() %>% trimws()

tibble(id, title, route)
})

answer<-bind_rows(dfs)
answer

# A tibble: 3 x 3
id title route
<int> <chr> <chr>
1 1 A X
2 1 A Y
3 2 B Z

关于rvest:处理不同数量的嵌套类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60791276/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com