这家报纸网站在单独的<p>对象中列出文章的段落,每个<class>属性的名称都以文章一词开头。
如何从<class>对象获取<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()发布于 2019-01-19 22:07:07
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 Afrikamuseum in Tervuren vor den Toren Brüssels besucht, kom"| __truncated__ ...
paragraphs[1]
#> [1] "TERVUREN taz | Wer dieses Jahr Belgiens berühmtes Afrikamuseum 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或.class2。这里有一个很棒的教程,如果您想了解更多关于CSS选择器的信息。
https://stackoverflow.com/questions/54271713
复制相似问题