我在Rvest中有一个请求有问题。
我从我的浏览器访问此链接,滚动时会出现元素:
https://www.disco.com.ar/Comprar/Home.aspx#_atCategory=false&_atGrilla=true&_id=446223
查看详细信息后,我发现了以下请求:
(link2 =“https://www.disco.com.ar/Comprar/HomeService.aspx/ObtenerArticulosPorDescripcionMarcaFamiliaLevex"”)
以前从来没有使用"POST“作为请求。我尝试了这些代码,但没有成功。
library(rvest)
library(httr)
library(jsonlite)
url_2<-"https://www.disco.com.ar/Comprar/HomeService.aspx/ObtenerArticulosPorDescripcionMarcaFamiliaLevex"
cuerpo <- list(
IdMenu="446223",textoBusqueda="", producto="", marca="", pager="", ordenamiento=0, precioDesde="", precioHasta=""
)
page <- httr::POST(url_2,body=cuerpo,encode="form")
pagina <- content(page) %>%
html_attr("value")r <- POST("https://www.disco.com.ar/Geolocalizacion/Geolocalizacion.aspx/GuardarLocalizacion",
content_type("application/json"),
body = toJSON(
list(
latitud = NA,
longitud = NA,
noLocalizar = TRUE
), auto_unbox = TRUE
),encode = "json")
cookieList <- cookies(r)
cookies <- cookieList$value %>% setNames(cookieList$name)
url <- "https://www.disco.com.ar/Comprar/Home.aspx#_atCategory=false&_atGrilla=true&_id=446223"
main_page <- html_session(url,set_cookies(cookies))如何访问以下数据(响应)(在上面的link2中)?
"{"d":"{"Tipo":[{"Filtro":"Importada","IdMenu":"0","Cantidad":"17"},{"Filtro":"Otros","IdMenu"...“
欢迎任何帮助。非常感谢!
发布于 2021-01-14 03:36:41
您打印的输出是一个json string。您可以使用jsonlite::fromJSON将其解析为列表/数据帧。结果将是一个列表,然后您可以在其中查找您正在搜索的数据。我将您的两个代码示例合并为一个更简单的代码。
library(httr)
library(rvest)
library(jsonlite)
r <- POST("https://www.disco.com.ar/Comprar/HomeService.aspx/ObtenerArticulosPorDescripcionMarcaFamiliaLevex",
content_type("application/json"),
body = toJSON(list(IdMenu="446223",textoBusqueda="", producto="", marca="", pager="", ordenamiento=0, precioDesde="", precioHasta=""),
auto_unbox = TRUE
), encode = "json")
data.json <- r %>% content() %>% nth(n=1) %>% fromJSON()data.json是一个包含5个元素的列表。每个元素都是一个包含不同类型数据的数据帧。
例如,data.json$ResultadosBusquedaLevex返回一个数据帧,其中包含产品列表和一些详细信息(如价格)。
df.1 <- data.json$ResultadosBusquedaLevex
head(df.1)
IdArticulo IdArchivoSmall IdArchivoBig DescripcionArticulo Precio PrecioAnterior precioUnidad_1 precioUnidad_0 Stock
1 4862 872107.jpg 872112.jpg Cerveza Heineken 473 Ml 110.33 Lt 233.26 47
2 4867 893696.jpg 893701.jpg Cerveza Rubia Quilmes Clásica 473 Ml Lata 72.10 Lt 152.43 43
3 5239 893714.jpg 893719.jpg Cerveza Rubia Quilmes Clásica 6-Pack 473 Ml Lata 353.50 Un 58.92 39
4 12710 872125.jpg 872130.jpg Cerveza Heineken 330 Ml 88.81 Lt 269.12 458
5 84122 893776.jpg 893781.jpg Cerveza Rubia Brahma Chopp 473 Ml Lata 79.27 Lt 167.59 44
6 119170 893793.jpg 893798.jpg Cerveza Rubia Brahma Chopp 6-Pack 473 Ml Lata 364.00 Lt 769.56 443
StockCD IdMenu Pesable CargarCaracteristicasDelProducto Grupo_Marca Grupo_Tipo Grupo_Precio Row Articulo_Oferta CucardaOferta CucardaOferta2
1 0 0 False HEINEKEN Otros 1 1 0
2 0 0 False QUILMES Otros 1 2 0
3 0 0 False QUILMES Otros 3 3 0
4 0 0 False HEINEKEN Otros 1 4 0
5 0 0 False BRAHMA Otros 1 5 0
6 0 0 False BRAHMA Otros 3 6 0
CucardaOferta3 ArticuloEnCarrito ArticuloCantidadPedida Descuentos EsMacriProd SinInteres Categoria UnidadMult MinCompra
1 N 0 NULL FALSE Bebidas->Cervezas 1 1
2 N 0 NULL FALSE Bebidas->Cervezas 1 1
3 N 0 NULL FALSE Bebidas->Cervezas 1 1
4 N 0 NULL FALSE Bebidas->Cervezas 1 1
5 N 0 NULL FALSE Bebidas->Cervezas 1 1
6 N 0 NULL FALSE Bebidas->Cervezas 1 1https://stackoverflow.com/questions/65691378
复制相似问题