gpt4 book ai didi

r - 根据特定模式抓取多个段落

转载 作者:行者123 更新时间:2023-12-03 16:59:04 25 4
gpt4 key购买 nike

该报纸网站在单独的<p>对象中列出了其文章的段落,其中每个<class>属性的名称均以文章一词开头。

如何从tz2对象中获得<class>属性以文章开头的所有段落?

require(rvest)

url = 'http://taz.de/Kongo-Kunst-im-Bruesseler-Afrikamuseum/!5563620/'

tz = read_html(url)

tz2 = tz %>%
xml_nodes(xpath = "//*[@class='sectbody']") %>%
xml_children()


我的尝试:

# get one paragraph by class attribute
tz2 %>%
xml_nodes(xpath = "//p[@class='article first odd Initial']") %>%
xml_text()

# regex-like get all 'article' paragraphs
tz2 %>%
xml_nodes(xpath = "//p[@starts-with(@class, 'article')]") %>%
xml_text()

最佳答案

CSS选择器比XPath更简单。对于类,常规语法为tag.class,如果缺少某些内容,则它匹配所有内容,因此.article匹配具有类article的每个标记。选择器之间的空格意味着寻找与第二个选择器匹配的第一部分的子代。所以:



library(rvest)

tz <- read_html('http://taz.de/Kongo-Kunst-im-Bruesseler-Afrikamuseum/!5563620/')

paragraphs <- tz %>% html_nodes('.sectbody p.article') %>% html_text()

str(paragraphs)
#> chr [1:20] "TERVUREN taz | Wer dieses Jahr Belgiens berühmtes Afri­kamuseum in Tervuren vor den Toren Brüssels besucht, kom"| __truncated__ ...

paragraphs[1]
#> [1] "TERVUREN taz | Wer dieses Jahr Belgiens berühmtes Afri­kamuseum in Tervuren vor den Toren Brüssels besucht, kommt ins Staunen. Wo früher das Musée royal d’Afrique Centrale (MRAC) alte Kolonialsammlungen darbot, zelebriert heute das renovierte „Africa Museum“, wie es jetzt heißt, den Reichtum des Kongo mit all seinen hellen und dunklen Seiten."


请注意,这是可行的,因为HTML中的类用空格隔开,因此 class="class1 class2"将匹配 .class1.class2Here's a great tutorial如果您想了解有关CSS选择器的更多信息。

关于r - 根据特定模式抓取多个段落,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54271713/

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