[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$productosconurl = @{}
$web = Invoke-WebRequest "https://www.alcampo.es/compra-online/bebidas/zumos-de-frutas/naranja/c/W110201?q=%3Arelevance&show=All"
foreach($link in ($web.links.href | Group-Object).name){
if ($link -match "compra-online/bebidas/zumos-de-frutas/naranja" -and $link -notmatch "/c/")
{
$urlsanalizar = "https://www.alcampo.es$link"
$urlsanalizar
$web = Invoke-WebRequest $urlsanalizar
# Datos nutricionales del producto
$productos = @{}
# Extraer los valores nutricionales del producto
($web.AllElements | Where Class -eq “productNutritionalInformation valoresNutricionalesTabla”).innerHtml | %{
($_ -replace "</SPAN> <SPAN ","</SPAN>|<SPAN " -replace "<.*?>" -replace " g" -replace " Kj" -replace " Kcal" -split "`n" | ? {$_.trim() -ne ""} | ? {$_.trim() -notmatch "nutricionales"}).trim()
} | %{$productos.add($_.split("|")[0],$_.split("|")[1])}
$pesos = ($web.AllElements | Where Class -eq “productNutritionalInformation valoresNutricionalesTabla tablaInformacionAdicional”).innerText | %{
($_ -replace "<.*?>" -split "`n" | ? {$_.trim() -ne ""}).trim() -replace "g"
}
$nombre = ($web.AllElements | Where Class -eq “productDesc”).innerText | %{
$_
}
# Añadir los valores nutricionales del producto a la estructura
0..$pesos.Count | % {if($_%2-eq 0 -and $_ -lt 19){$productos.add($pesos[$_],$pesos[$_+1])}}
# Calcular el valor nutricional en función de la cantidad del alimento consumido
$comidacantidad = 100
$productos.'Peso neto escurrido'
$productos.Add('Valor energético(Kcal) Neto',($productos.'Valor energético(Kcal)' / $productos.'Peso Neto')*$comidacantidad)
$productos.Add('Hidatos de carbono Neto',($productos.'Hidratos de carbono' / $productos.'Peso Neto')*$comidacantidad)
$productos.Add('Grasas Netas',($productos.Grasas / $productos.'Peso Neto')*$comidacantidad)
$productos.Add('Grasas saturadas Netas',($productos.'Grasas saturadas' / $productos.'Peso Neto')*$comidacantidad)
$productos.Add('Azúcares Netos',($productos.Azúcares / $productos.'Peso Neto')*$comidacantidad)
$productos.Add('Proteínas Netas',($productos.Proteínas / $productos.'Peso Neto')*$comidacantidad)
# Mostrar la estructura con los valores nutricionales
$productos.GetEnumerator() | sort -Property name
$productosconurl.Add($nombre,$productos.Azúcares)
}
}
$contenido = $productosconurl.GetEnumerator() | Select-Object @{n='Producto';e={$_.Key}},@{n='Azúcar';e={[Double]($_.Value)}} | sort Azúcar -Descending | ConvertTo-Html
# Datos URIs, URLs prefijados con los datos: esquema, permiten a los creadores de contenido incorporar pequeños archivos en linea en los documentos
# Codificar en Base64
$base64 = [System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($contenido))
Start-Process chrome ("data:text/html;base64," + $base64)
Código web generado en tiempo real y codificado en Base64 para que pueda ser interpretado por Google Chrome
data:text/html;base64,PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIgICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4gPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPiA8aGVhZD4gPHRpdGxlPkhUTUwgVEFCTEU8L3RpdGxlPiA8L2hlYWQ+PGJvZHk+IDx0YWJsZT4gPGNvbGdyb3VwPjxjb2wvPjxjb2wvPjwvY29sZ3JvdXA+IDx0cj48dGg+UHJvZHVjdG88L3RoPjx0aD5BesO6Y2FyPC90aD48L3RyPiA8dHI+PHRkPk4mIzIzMztjdGFyIGRlIG5hcmFuamEgeSB6YW5haG9yaWEgQVVDSEFOIGJyaWNrIGRlIDEgbGl0cm88L3RkPjx0ZD4xMSwyPC90ZD48L3RyPiA8dHI+PHRkPk4mIzIzMztjdGFyIGRlIG5hcmFuamEgeSBtYW5nbyBBVUNIQU4gYnJpY2sgZGUgMSBsaXRybzwvdGQ+PHRkPjExLDE8L3RkPjwvdHI+IDx0cj48dGQ+TiYjMjMzO2N0YXIgZGUgbmFyYW5qYSBET04gU0lNJiMyMTE7TiBib3RlbGxhIGRlIDEsNSBsaXRyb3M8L3RkPjx0ZD4xMCw0PC90ZD48L3RyPiA8dHI+PHRkPk4mIzIzMztjdGFyIGRlIG5hcmFuamEgWlVNT1NPTCBicmljayBkZSAxIGxpdHJvPC90ZD48dGQ+MTAsNDwvdGQ+PC90cj4gPHRyPjx0ZD5OJiMyMzM7Y3RhciBkZSBOYXJhbmphIEdSQU5JTkkgMzMgY2M8L3RkPjx0ZD4xMCwzPC90ZD48L3RyPiA8dHI+PHRkPk4mIzIzMztjdGFyIGRlIG5hcmFuamEgR1JBTklOSSBib3RlbGxhIGRlIDEgbGl0cm88L3RkPjx0ZD4xMCwxPC90ZD48L3RyPiA8dHI+PHRkPk4mIzIzMztjdGFyIGRlIG5hcmFuamEgR1JBTklOSSBib3RlbGxhIGRlIDEsNSBsaXRyb3M8L3RkPjx0ZD4xMCwxPC90ZD48L3RyPiA8dHI+PHRkPk4mIzIzMztjdGFyIGRlIG5hcmFuamEgQVVDSEFOIGJyaWNrIGRlIDIgbGl0cm9zPC90ZD48dGQ+MTAsMTwvdGQ+PC90cj4gPHRyPjx0ZD5CcmljayB6dW1vIGV4cHJpbWlkbyBkZSBuYXJhbmphIHNpbiBwdWxwYSBET04gU0lNJiMyMTE7TiAyIGxpdHJvczwvdGQ+PHRkPjEwPC90ZD48L3RyPiA8dHI+PHRkPlp1bW8gZGUgc29qYSB5IG5hcmFuamEgRE9OIFNJTU9OIFNPWSBicmljayBkZSAxIGxpdHJvPC90ZD48dGQ+MTA8L3RkPjwvdHI+IDx0cj48dGQ+WnVtbyBleHByaW1pZG8gZGUgbmFyYW5qYSBET04gU0lNJiMyMTE7TiBicmljayBkZSAxIGxpdHJvPC90ZD48dGQ+MTA8L3RkPjwvdHI+IDx0cj48dGQ+WnVtbyBleHByaW1pZG8gZGUgbmFyYW5qYSBzaW4gcHVscGEgRE9OIFNJTSYjMjExO04gYnJpY2sgZGUgMTIsNSBjZW50aWxpdHJvcyBwYWNrIGRlIDQgdWRzLjwvdGQ+PHRkPjEwPC90ZD48L3RyPiA8dHI+PHRkPkJyaWNrIHp1bW8gZGUgbmFyYW5qYSBjb24gcHVscGEgKDEwMCUgbmFyYW5qYSBleHByaW1pZGEpIERPTiBTSU0mIzIxMTtOIDJsPC90ZD48dGQ+MTA8L3RkPjwvdHI+IDx0cj48dGQ+QnJpY2sgenVtbyBkZSBuYXJhbmphIERPTiBTSU0mIzIxMTtOIDFsPC90ZD48dGQ+MTA8L3RkPjwvdHI+IDx0cj48dGQ+QnJpY2sgenVtbyBleHByaW1pZG8gZGUgbmFyYW5qYSBzaW4gcHVscGEgRE9OIFNJTSYjMjExO04gMSBsaXRybzwvdGQ+PHRkPjEwPC90ZD48L3RyPiA8dHI+PHRkPlp1bW8gZGUgbmFyYW5qYSB5IHNvamEgZGUgb3JpZ2VuIDEwMCUgdmVnZXRhbCBWSVZFU09ZIGRlIFBhc2N1YWwgMSBsLjwvdGQ+PHRkPjksNzwvdGQ+PC90cj4gPHRyPjx0ZD5CcmljayB6dW1vIGV4cHJpbWlkbyBuYXJhbmphIEFVQ0hBTiAxIGw8L3RkPjx0ZD45LDc8L3RkPjwvdHI+IDx0cj48dGQ+TiYjMjMzO2N0YXIgZGUgbmFyYW5qYSBNSU5VVEUgTUFJRCBib3RlbGxhIGRlIDEgbGl0cm88L3RkPjx0ZD45LDc8L3RkPjwvdHI+IDx0cj48dGQ+WnVtbyBkZSBuYXJhbmphIGV4cHJpbWlkbyBjb24gcHVscGEgWlVNT1NPTCAxIGxpdHJvPC90ZD48dGQ+OSw0PC90ZD48L3RyPiA8dHI+PHRkPlp1bW8gZXhwcmltaWRvIGRlIG5hcmFuamEgc2luIHB1bHBhIFpVTU9TT0wgYm90ZWxsYSBkZSA4NSBjZW50aWxpdHJvczwvdGQ+PHRkPjksNDwvdGQ+PC90cj4gPHRyPjx0ZD5adW1vIGV4cHJpbWlkbyBkZSBuYXJhbmphIGNvbiBwdWxwYSBaVU1PU09MIGJvdGVsbGEgZGUgODUgY2VudGlsaXRyb3M8L3RkPjx0ZD45LDQ8L3RkPjwvdHI+IDx0cj48dGQ+WnVtbyBkZSBuYXJhbmphIGV4cHJpbWlkYSBzaW4gcHVscGEsIFpVTU9TT0wsIGJyaWNrIGRlIHVuIGxpdHJvLjwvdGQ+PHRkPjksNDwvdGQ+PC90cj4gPHRyPjx0ZD5OJiMyMzM7Y3RhciBkZSBuYXJhbmphIHkgbWFuZ28gR1JBTklOSSBib3RlbGxhIGRlIDEgbGl0cm88L3RkPjx0ZD45LDI8L3RkPjwvdHI+IDx0cj48dGQ+QnJpY2sgenVtbyBkZSBuYXJhbmphIGR1bGNlIEdSQU5JTkkgMSBsPC90ZD48dGQ+OTwvdGQ+PC90cj4gPHRyPjx0ZD5adW1vIGVjb2wmIzI0MztnaWNvIGRlIG1hbmdvIHkgbmFyYW5qYSBMQU1CREEgYm90ZWxsYSBkZSAxIGwuPC90ZD48dGQ+OCw5PC90ZD48L3RyPiA8dHI+PHRkPlp1bW8gZGUgbmFyYW5qYSBmcmVzY2EgU09OQVRVUkFMIDI1MCBNaWxpbGl0cm9zPC90ZD48dGQ+OCw3PC90ZD48L3RyPiA8dHI+PHRkPkJyaWNrIHp1bW8gZGUgbmFyYW5qYSBBVUNIQU4gMSBsPC90ZD48dGQ+OCw0PC90ZD48L3RyPiA8dHI+PHRkPlp1bW8gZGUgTmFyYW5qYSBKVVZFUiBCb3RlbGxhIDEgbC48L3RkPjx0ZD44LDQ8L3RkPjwvdHI+IDx0cj48dGQ+TiYjMjMzO2N0YXIgZGUgbmFyYW5qYSB5IHphbmFob3JpYSBHUkFOSU5JIGJvdGVsbGEgZGUgMSBsaXRybzwvdGQ+PHRkPjgsMzwvdGQ+PC90cj4gPHRyPjx0ZD5adW1vIGVjb2wmIzI0MztnaWNvIGRlIG5hcmFuamEgTEFNQkRBIGJvdGVsbGEgZGUgMSBsLjwvdGQ+PHRkPjcsMTwvdGQ+PC90cj4gPHRyPjx0ZD5OJiMyMzM7Y3RhciBjb24gc3RldmlhIGRlIG5hcmFuamEgTUlOVVRFIE1BSUQgYm90ZWxsYSBkZSAxIGxpdHJvPC90ZD48dGQ+NSw3PC90ZD48L3RyPiA8dHI+PHRkPk4mIzIzMztjdGFyIGRlIG5hcmFuamEgSlVWRVIgMiBsLjwvdGQ+PHRkPjUsNjwvdGQ+PC90cj4gPC90YWJsZT4gPC9ib2R5PjwvaHRtbD4=
The post Mostrar y generar en tiempo real una tabla HTML con el valor nutricional (azúcares) de todos los fabricantes de un producto encontrado en la tienda online de un supermercado en PowerShell appeared first on Scripting and security.







