У меня очень странная проблема при кодировании с Rvest, которую я не могу обойти. Я пытаюсь собрать информацию с веб-сайта Amazon, который требует одинакового количества столбцов для всех собираемых мной данных (для создания таблицы).
Я избавляю от неприятностей, особенно когда пытаюсь очистить название предмета. Это код, который я написал для названия предмета:
#MAKE DF
df_Office <- OfficeSupplies %>%
html_nodes("[class='zg-item-immersion']") %>% #General nodes for each item
map_df(~list(ItemName = html_nodes(.x, "[class='a-link-normal']") %>% #maps dataframe. finds Itemname,Rating e.t.c for each product
html_text()%>%
{if(length(.) == 0) NA else .}%>% ###APPENDIX 1.1 Makes Items without attribute N/A
str_extract_all("(?<=).+(?=\n.*)")%>% #extracts everything in \n
unlist()%>%
str_subset("5 stars", negate =TRUE)%>% #Takes out Items that have 5 stars in name
{if(length(.) == 0) NA else .}%>% ##APPENDIX 1.1 Makes Items without attribute N/A
str_remove_all(" {2,30}")%>% #Removes unnecessary spaces
str_extract_all("(([:graph:]+) )+")%>% #extracts strings(sentences) containing characters
unlist()%>%
as.character()#
))
return(df_Office)
}
map_df(1:2, Scrape_amazon) #does the amazon scrape for both top 100 pages.
Этот код работает в большинстве случаев. Основная проблема заключается в том, что время от времени я сталкиваюсь с первой сотней страниц с 1 или более элементами, содержащими;; Добавление этого создает новую строку данных, которая отбрасывает мое общее количество строк. Как мне манипулировать строкой ItemName, чтобы; трактуется как обычный пробел?
Ваша помощь очень ценится!
ПРИЛОЖЕНИЕ
1.1 Код предоставлен: alistaire @ Ввод NA где отсутствуют значения при очистке с помощью rvest