Rvest- Amazon Сайт Scrape Названия продуктов. Как я могу получить свой код, чтобы не сломаться, когда он сталкивается с - PullRequest
0 голосов
/ 27 апреля 2020

У меня очень странная проблема при кодировании с 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

...