[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 " |" -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
$contenido = $contenido.replace("Azúcar","Azúcar")
# 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=