Я использую Rvest и Rselenium для очистки заголовков, количества больших пальцев и ссылок на изображения из http://zhihu.sogou.com/. Однако я замечаю, что, кажется, не все заголовки следуют за рисунком.Это означает, что в некоторых из этих элементов (заголовков) не было найдено ни одного элемента изображения.Поэтому я хочу вменить 'NA', если элемент изображения не отображается, и создать информационный кадр, включающий эти 3 переменные (заголовки, большие пальцы и ссылки на изображения)
Я пробовал map_df, но он возвращает сообщение об ошибке.
### scraping sougou zhihu thumbs up ,titles and picture links
library(RSelenium)
library(rvest)
library(stringr)
library(purrr)
url<-'http://zhihu.sogou.com/'
remDr<-remoteDriver(browserName='chrome')
remDr$open()
remDr$navigate(url)
remDr$findElement(using="xpath","//*[@id='hot_tab']/a")$clickElement()####click hot tab to find the target content
####loop to workaround AJAX
for (i in 1:5){
remDr$findElement("css","body")$sendKeysToElement(list(key="end"))
remDr$findElement("xpath","//*[@id='load_more']")$clickElement()
Sys.sleep(runif(1,3,5))
}
#get pagesource and form a dataframe
websrc<-remDr$getPageSource()[[1]]
df<-read_html(websrc)%>%
html_nodes('ul.news-list')%>%
map_df(~list(title=html_nodes(.x,".tit a")%>%html_text()%>%{if(length(.)==0) NA else .},
thumbup=html_nodes(.x,".zan")%>%html_text()%>%{if(length(.)==0) NA else .},
links=html_nodes(.x,"#content_wrapper img")%>%html_attr('src')%>%str_extract_all(.,"//img[^[:blank:]]+\\.jpg")%>%str_replace_all(.,pattern = "amp;",replacement = "")%>%{if(length(.)==0) NA else .}))
##Error in bind_rows_(x, .id) : Argument 3 must be length 100, not 1
Я ожидаю найти способ приписать 'NA', если в некоторых элементах не найден элемент изображения, поэтому я могу сопоставить, какие заголовки следуют со ссылкой на изображение, а какие нет.