我正试图从网页上抓取信息:
rm(list = ls())
library(rvest)
library(XML)
library(dplyr)
utils::setInternet2(TRUE)
options(download.file.method = "internal")
url <-"http://www.home24.at/smood/premium-komfortmatratze-smood-180-x-200cm"
pgsession <- html_session(url) ## create session
pgform <- html_form(pgsession)[[1]] ## pull form from session
pflege <- pgsession %>%
jump_to(url) %>%
read_html() %>% html_nodes(xpath="//*[@id='product-details']/div/div[2]/div[2]/div[2]/div[5]/ul") %>%
html_text()
我得到的结果如下:
"Doppeltuchbezug bis 95°C waschbarWebstoffbezug kann in die Reinigung gegeben werden"
但是,我希望得到这样的结果,因此每个列表项都是分开的:
"Doppeltuchbezug bis 95°C waschbar", "Webstoffbezug kann in die Reinigung gegeben werden"
有关如何分别划分字符串并单独删除每个列表项的任何建议吗?
答案 0 :(得分:3)
您只需要使用XPath或CSS选择器来选择所需的两个元素。要查找适当的选择器,请在Web浏览器中检查HTML;自动生成的很少是最优的。
# pull page once and store in case you want to parse multiple elements
page <- pgsession %>% jump_to(url) %>% read_html()
page %>% html_nodes(xpath = '//*[@data-reactid="350"]/li') %>% html_text()
## [1] "Doppeltuchbezug bis 95°C waschbar"
## [2] "Webstoffbezug kann in die Reinigung gegeben werden"