如何从 R 中的网络表格中提取带有重音标记的数据

问题描述

我正在抓取一个药房页面,我需要在其中提取他们拥有的所有数据。我在第一个做的是提取目录中出来的数据,它提取得很好。然后为了程序进入每个产品的链接,我让它提取产品链接,然后我在第二个for中占用,这样它就可以从包含药物详细信息的表格中提取信息。它仅能很好地提取一些数据,因为正是那些带有重音标记的数据被标记为 NA。所以我认为这与不阅读重音标记词有关。我需要提取这些数据,因此欢迎提出任何建议。

在这里我把代码留给你看,在此先谢谢你!

library(rvest)
library(tidyverse)

#Ultima pagina de ahumada es la 192
lista_url <- paste0("https://www.farmazon.cl/categorias/medicamentos/page/",1:50,".html?order=name&dir=asc")
#class(lista_url)
lista_url
ultima_pagina= length(lista_url)

#Luego en el for habra que reemplazar el 1:2 por la variable ultima_pagina
lista_final = list()
for(i in 1:2){
  leahtml = read_html(lista_url[i])
  lista_pagina =leahtml %>% 
    html_nodes('.page-main')  %>% html_nodes(".product-item-info") %>%
    map_df( ~ {
      marca = html_nodes(.x,".product-item-link") %>%  html_text()
      marca <- ifelse(length(marca)>0,marca,NA_character_)
      
      precio = html_nodes(.x,".price") %>%  html_text()
      precio <- ifelse(length(precio)>0,precio,NA_character_)
      
      
      farmacia = html_nodes(.x,".vendor-label") %>%  html_text()
      farmacia <- ifelse(length(farmacia)>0,farmacia,NA_character_)
      
      link = html_nodes(.x,"[class='product name product-item-name'] > a") %>% html_attr("href")
      link <- ifelse(length(link)>0,link,NA_character_)
      
      
      list(marca=marca,Precio=precio,Farmacia=farmacia,Link=link)
    }) 
  lista_final = rbind(lista_final,lista_pagina)
  lista_pagina = list()
  Sys.sleep(2)
  
}


enlaces = as.vector(unlist(lista_final['Link']))

ultimo_enlace = length(enlaces)


resumen_final = list()
for(i in 1:ultimo_enlace){
  leahtml = read_html(enlaces[i])
  
  resumen_pagina =leahtml %>% 
    html_nodes('.data.table.additional-attributes')  %>% 
    map_df( ~ {
      
      recetamed = html_nodes(.x,"[data-th='Receta Médica']") %>% html_text() 
      recetamed <- ifelse(length(recetamed)>0,recetamed,NA_character_)
      
      codisp = html_nodes(.x,"[data-th='Código ISP']") %>% html_text() 
      codisp <- ifelse(length(codisp)>0,codisp,NA_character_)
      
      forma = html_nodes(.x,"[data-th='Forma']") %>% html_text()
      forma <- ifelse(length(forma)>0,forma,NA_character_)
      
      lab = html_nodes(.x,"[data-th='Laboratorio / Fabricante']") %>% html_text() 
      lab <- ifelse(length(lab)>0,lab,NA_character_)
      
      pactivo = html_nodes(.x,"[data-th='Principio Activo']") %>% html_text() 
      pactivo <- ifelse(length(pactivo)>0,pactivo,NA_character_)
      
      concentracion = html_nodes(.x,"[data-th='PA Concentración']") %>% html_text()
      concentracion <- ifelse(length(concentracion)>0,concentracion,NA_character_)
      
      list(Recetamed=recetamed,CodigoISP=codisp,Forma=forma,Lab=lab,PActivo=pactivo,Concentracion=concentracion)
    }) 
  resumen_final = rbind(resumen_final,resumen_pagina)
  resumen_pagina = list()
  Sys.sleep(2)
}

bbdd_final = cbind(lista_final,resumen_final) #une la lista con toda la info con el resumen de cada producto

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)