Ladda ner prishistorik från prisjakt

Permalänk
Medlem

Ladda ner prishistorik från prisjakt

Jag skulle vilja ladda ner historiska priser för ett antal produkter från prisjakt (eller annan liknande sajt), dvs prisdatan som visas i grafer på prisjakts hemsida. Hur gör jag det på smidigast sätt?

Jag har hittat lite guider för hur man skrapar data från hemsidor, även en för grafer. Men jag har fastnat i jakt på en länk till datat. Jag är inte van vid front-end, så källkoden (view source via Chrome) är 2500 rader grekiska för mig. Några tips på vad jag ska leta efter?

Och hur kan jag smidigt iterera över flera produkter? Om jag t ex vill ladda ner prishistorik för de 100 mest populära hörlurarna.

Tack på förhand!

Permalänk
Medlem

Oftast kan man hitta det om du slår på developer tools i chrome och kollar under network. Där ser man att den bla laddar denna, vilket jag antar är vad du är ute efter:
https://prisjakt.nu/ajax/server.php?class=Graph_Product&metho...

Permalänk
Medlem
Skrivet av grovlimpa:

Oftast kan man hitta det om du slår på developer tools i chrome och kollar under network. Där ser man att den bla laddar denna, vilket jag antar är vad du är ute efter:
https://prisjakt.nu/ajax/server.php?class=Graph_Product&metho...

Nice!

Du fick mig att göra det jag skjutit upp väldigt länge; att hämta data till enklare grafer lokalt! Just nu letar jag telefon så de fick följa med i exemplet nedan.
Eftersom jag använder mig av powershell (och .NET) så blev det enligt nedan spoiler (detta är en ganska ful första variant) men funderar på att trycka in det i en textfil/db någonstans istället och läsa ut från den istället.

$ID = @( "Mate20","4964878","Sony XZ2","4700438","SGS9","4652628" ) $IDCount = (($ID.Count)) $pattern = '[^a-zA-Z0-9]' $o = 0 do { # collecting data from Prisjakt.nu $IDValue = ($ID[($o+1)]) $GetData = Invoke-WebRequest -Uri "https://prisjakt.nu/ajax/server.php?class=Graph_Product&metho..." # cleaning up data $LaunderData = ((((((((((((($GetData.content).replace("}","")).replace("{","")).replace("[","")).replace("]","")).replace('"','')).replace("value","")).replace("time","")).replace(":","")).replace("`t|`n|`r","").replace("errorfalse","")).replace("message","")).replace("request_id-1","")).replace("meta","")) $LaunderedData = ($LaunderData.Substring(25)) $LaunderedData = ($LaunderedData.substring(0,$LaunderedData.Length-16)).split(",") # setting up arrays/hashtables $DataArray = @() $DataHash = @{} $i = 0 # Making data readable for visual graph foreach($obj in $LaunderedData) { if($obj.length -gt 6) { $origin = New-Object -Type DateTime -ArgumentList 1970, 1, 1, 0, 0, 0, 0 $obj=$origin.AddSeconds($obj) $objtoarray = get-date $obj -Format 'yyyy-MM-dd' $DataArray += $objtoarray } else{ $DataArray += $obj } } $ArrayEndCount = (($DataArray.Count)-1) do { $first = ($DataArray[$i]) $i++ $second = ($DataArray[$i]) $i++ $DataHash.Add( ($first.ToString()) ,($second.ToString()) ) } until( $i -gt $ArrayEndCount ) $Data = $DataHash.GetEnumerator() | sort -Property name # load the appropriate assemblies [void][Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") [void][Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms.DataVisualization") # create chart object $Chart = New-object System.Windows.Forms.DataVisualization.Charting.Chart $Chart.Width = 1300 $Chart.Height = 500 $Chart.Left = 40 $Chart.Top = 30 # create a chartarea to draw on and add to chart $ChartArea = New-Object System.Windows.Forms.DataVisualization.Charting.ChartArea $Chart.ChartAreas.Add($ChartArea) # add data to chart [void]$Chart.Series.Add("Data") $Chart.Series["Data"].Points.DataBindXY($Data.Key, $Data.Value) # display the chart on a form $TitlePart1 = $ID[$o] $TitlePart2 = $ID[$o+1] $Form = New-Object Windows.Forms.Form $Form.StartPosition = [System.Windows.Forms.FormStartPosition]::CenterScreen $Form.Text = "$TitlePart1 PID: $TitlePart2" $Form.Width = 1400 $Form.Height = 600 $Form.controls.add($Chart) $Form.Add_Shown({$Form.Activate()}) $Form.ShowDialog() $o++ $o++ } until( $o -gt ($IDCount-1) )

Dold text

#powershell #DotNET #Prisjakt

Visa signatur

🟢 Main: Ryzen7 5800X | Strix x470-I | 32GB | RTX2070S | Samsung C49RG9
🔵 unRaid: Ryzen5 2700X | B450M DS3H | 32GB
🟠 Tfn: Google Pixel 7 Lime Green

-:| @ eller citera för svar |:-