在下面的页面中,<div>
元素下有多个段落,这导致在抓取页面时只打印第一个<p>
。
http://www.epilepsy.com/connect/forums/living-epilepsy-adults/anyone-else-w-connection-vietnam-war
我试着用下面的代码把所有的<p>
元素加起来
content = html_text(html_node(h, 'div.field-item.even > p'))
但是当提取了所有的<p>
时,不能保存数据帧(错误为"替换有6行,数据有1行")
有人知道如何解决这个问题吗?我感谢你的帮助。
dataf <- data.frame(title=c(), content=c())
dataf
post.num <- 1
for(link in article_href){
link = sprintf('http://www.epilepsy.com%s', link)
print(link)
h = read_html(link)
title = html_text(html_node(h, 'div.panel-pane.pane-node-title.no-title.block'))
title <- str_trim(title)
str_replace_all(title, '[[:space:]]', '')
print(title)
content = html_text(html_node(h, 'div.field-item.even > p'))
print(content)
dataf[post.num, 'content'] = content
post.num <- post.num + 1
}
如果您不关心文本内容中的格式,您可以只选择<p>
的父节点:
library(dplyr)
library(rvest)
library(stringr)
h = read_html('http://www.epilepsy.com/connect/forums/living-epilepsy-adults/anyone-else-w-connection-vietnam-war')
title <- h %>% html_node('div.pane-node-title h2') %>% html_text(trim = TRUE)
print(title)
content <- h %>% html_node('.field-name-field-body') %>% html_text(trim = TRUE)
print(content)