问题描述
我正在抓取一个药房页面,我需要在其中提取他们拥有的所有数据。我在第一个做的是提取目录中出来的数据,它提取得很好。然后为了程序进入每个产品的链接,我让它提取产品链接,然后我在第二个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 (将#修改为@)