*F* Skrevet 23. februar 2017 Forfatter Del Skrevet 23. februar 2017 Etter mange timer på både youtube og google, oppgaven er utført (Har ikke pyntet noe på koden, Cleare-Variable er bare for lettere feilsøking. Clear-Variable output $HtmlAgilityPack_Folder = "C:\Users\Flemming\Documents\PS\Ekstra\HtmlAgilityPack.1.4.6\Net45" $HtmlAgilityPack_File = "HtmlAgilityPack.dll" $web = "http://www.pollenvarslingen.no/Forsiden/Varsel.aspx" $location = "Trøndelag" # "Østlandet med Oslo" # "Sørlandet" # "Rogaland" # "Hordaland" # "Sogn og Fjordane" # "Møre og Romsdal" # "Indre Østlandet" # "Sentrale fjellstrøk i Sør-Norge" # "Trøndelag" # "Nordland" # "Troms" # "Finnmark" cd $HtmlAgilityPack_Folder add-type -Path .\$HtmlAgilityPack_File $doc = New-Object HtmlAgilityPack.HtmlDocument $doc.LoadHtml((iwr $web).RawContent) $output = $doc.DocumentNode.SelectNodes("//*[@id='forecastTable']//tr[contains(.,'$location')]") #$output Write-Host Oversikt over spredning ved $location Write-Host ------------------------------------- Write-Host Spredning av or i dag: $output.SelectNodes("./td[2]").outerHTML.split('"')[1] Write-Host Spredning av or i morgen: $output.SelectNodes("./td[3]").outerHTML.split('"')[1] Write-Host Spredning av hassel i dag: $output.SelectNodes("./td[4]").outerHTML.split('"')[1] Write-Host Spredning av hassel i morgen: $output.SelectNodes("./td[5]").outerHTML.split('"')[1] Write-Host Spredning av salix i dag: $output.SelectNodes("./td[6]").outerHTML.split('"')[1] Write-Host Spredning av salix i morgen: $output.SelectNodes("./td[7]").outerHTML.split('"')[1] Write-Host Spredning av bjørk i dag: $output.SelectNodes("./td[8]").outerHTML.split('"')[1] Write-Host Spredning av bjørk i morgen: $output.SelectNodes("./td[9]").outerHTML.split('"')[1] Write-Host Spredning av gress i dag: $output.SelectNodes("./td[10]").outerHTML.split('"')[1] Write-Host Spredning av gress i morgen: $output.SelectNodes("./td[11]").outerHTML.split('"')[1] Write-Host Spredning av burot i dag: $output.SelectNodes("./td[12]").outerHTML.split('"')[1] Write-Host Spredning av burot i morgen: $output.SelectNodes("./td[13]").outerHTML.split('"')[1] Ser mye er likt det du gjør, men ikke alt ser jeg, det aller vanskeligste var definnetivt å få TR-en med TD inneholdende lokasjon innenfor. Lenke til kommentar
Axxxy Skrevet 24. februar 2017 Del Skrevet 24. februar 2017 (endret) Ser mye er likt det du gjør, men ikke alt ser jeg, det aller vanskeligste var definnetivt å få TR-en med TD inneholdende lokasjon innenfor. Gratulerer! Ja, du var ganske uheldig med hvor knotete HTML koden var laget. Som regel pleier det å være lettere å finne frem, men siden TR elementet i seg selv ikke hadde så mye å by på for å identifisere seg selv (alle TR elementene hadde class=fcRegion). Utenom det så ser koden din veldig fin ut! Det er også bra at du ikke har satt inn mellomrom i koden som har med output å gjøre for at det skal se beint ut (slik jeg gjorde i mitt tidligere eksempel), det er sett på som "bad programming practice". Om det er en ting jeg skal pirke på, så hadde jeg byttet ut; .outerHTML.split('"')[1] med .Attributes["title"].value # En dag kan. <td title="Ingen spredning" class="fcValueCell" bgcolor="#FFFFFF"> # forandre seg og bli sende slik ut <td class="fcValueCell" id="99" title="Ingen spredning" bgcolor="#FFFFFF"> Utenom det, tommel opp! Neste blir vel å lage en app som rister i lomma når det er fare for spredning? Endret 24. februar 2017 av Axxxy Lenke til kommentar
*F* Skrevet 24. februar 2017 Forfatter Del Skrevet 24. februar 2017 Vel, det er en grunn til at jeg skal ha denne informasjonen Skal i stede for å skrive til skjerm sette resultatene til variabler, eller mest sannsynlig, sette tall 1-2-3-4 etter hvor stor spredningen er. Deretter skal tallet sendes til en virtuell sensor i Domoticz (http://domoticz.com/) med JSON GET som igjen kan sende meg meldinger via Pushover (https://pushover.net/) når det er hensiktsmessig. Men den siste delen har jeg ganske kontroll over da jeg har gjort det før ref https://www.hjemmeautomasjon.no/forums/topic/120-hva-har-du-automatisert-idaghva-har-du-gjort-p%C3%A5-dine-prosjekter-idag/?do=findComment&comment=13041 Lenke til kommentar
Talwin Skrevet 27. april 2017 Del Skrevet 27. april 2017 Takk for det, selv om koden din ser fint og flott ut tror jeg jeg tar å prøver på å kode ut-hentingen av data selv kopierte dog denne: $doc.LoadHtml((iwr $url).RawContent)(Du vet forresten ikke hva iwr som står fremfor $url i ovennevnte kodelinje betyr? iwr er et alias for invoke-webrequest. For å sjekke kan du prøve å kjøre get-alias på kommandoer du er usikker på, f.eks "get-alias iwr" gir output: CommandType Name Version Source ----------- ---- ------- ------ Alias iwr -> Invoke-WebRequest Kan også anbefale Visual Studio Code med Powershell utvidelsen for powershell. Sann glede å jobbe med, og en av tingene den har er automatisk hinting for forkortelser. Eksempelvis: Som du ser er det også informasjon om funksjonen når du muser over den. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå