Citat:
Ursprungligen postat av
kanalapa
Med detta elpris vill jag automatiskt kunna styra mina elapparater hemma beroende på det aktuella elpriset. Men hur får jag hem day-ahead priset enklast?
Min ide är att köra web scraping på siten
https://www.nordpoolgroup.com/en/Mar...ly/?view=table. Har dock stött på problem då innehållet i tabellerna inte visas direkt i källkoden. Någon som vet hur man kan få innehållet ut dem?
Jodå, du har datan där i klartext.
Xpathen för SE1 i första kolumnen är:
Kod:
//*[@id="datatable"]/tbody/tr[1]/td[2]
Får värdet 1962,26 i klartext i det elementet, när jag har SEK valt på 5:e september.
Ändra listnumret i sista hakparentesen till 3, 4, eller 5 så byter du elområde.
Ändra listnumret i näst sista hakparentesen så byter du rad i tidtabellen (vilket är lätt att matcha in med time-modulen).
Jag hade löst det på något i stil med detta, om man vill använda elområde ett, vill se spotpriset exakt nu och är okej med att koden inte loopar exakt var 60:e sekund, utan tar 60 sekunder mellan slut och start:
Kod:
import datetime
now = datetime.datetime.now()
while True:
spotpris = driver.find_element(By.XPATH, '//*[@id="datatable"]/tbody/tr[' + str(now.hour) + ']/td[2]').text
# Lägg in önskad kod här, t.ex. en ifsats som styrs med värdet på variabeln spotpris
# I ifsatsen kan du lägga in en styrsignal till ett relä som styr dina elslukande apparater
time.sleep(60)
Du måste lägga in några importer till för att selenium ska fungera förstås, plus ha rätt webdriver på rätt ställe, starta en instans av webdrivern och gå till hemsidan med rätt URL.
Men det antar jag du har koll på om du redan letar element för webscraping.
Lägg märke till hur nuvarande timme från now.hour hjälper till att styra vilket element som ska öppnas genom att företräda elementnumret, efter att det konverterats till en string så det passar i xpathen.
Du kan använda liknande metoder för att hitta genom många tabeller på internet om du ska matcha mot t.ex. en databas eller excelfil som du har genererat själv, eller om du bara vill räkna antalet element i den nivån, skapa en range som du itererar genom, låta iterationssiffran styra vilket specifikt element du vill hämta, lägga till elementet i en lista med .append, och sedan skjuta in hela listan du har fått i en databas.
Många webutvecklare återanvänder gärna element på just det där sättet då det är ett väldigt smidigt sätt att bygga tabeller på, och stilsätta dem med CSS sedan.
Just att bygga en databas kan vara schysst om du vill kolla historiska priset bakåt för att göra egna approximationer om vad priset kan tänkas bli framöver under de olika tiderna på dygnet.
Behöver du hitta elementdata i fortsättningen, öppna devtools i chrome (högerklicka, inspektera, eller bara F12) och tryck på den lilla muspekaren över en ruta uppe till vänster i devtools. Bredvid knappen som skiftar mellan desktopläge och mobilläge.
Sedan kan du hålla musen över de flesta element för att se vad koden är för det. Klicka på elementet för att låsa markören i koden på det.
Dubbelklicka elementkoden, eller klicka pilen vid den, för att öppna och se om det finns några underkategorier där det du letar finns.
Sedan finns förstås nätverkstabben också, den kan det ibland finnas grejer i. Tryck på network, uppdatera sidan, kolla vad som dyker upp, klicka på det du är intresserad av, och kolla vad mer som dyker upp då.
Citat:
Ursprungligen postat av
HeiligeMakkaroni
Prova APIet från
entsoe.eu
Jag hittar bara annan elnätsdata än just spotpriset där.
Citat:
Ursprungligen postat av
NamnA123
Var det inte något liknande som är person gjorde för att boka passtid?
Är detta framtiden kanske?
Jo, det var just den (för att inte glömma även vår bäste användare Enterprise, som bidrar med mycket i dessa krokar) som sporrade mig till att börja med webscraping.
Passfuralle hette/heter den, utvecklat av
Johan Stenström. En riktigt hyvens kille, då han personligen hjälpte mig på rätt spår att börja använda det.
Ett otroligt bra verktyg i största allmänhet, det här med webscraping, och ett fantastiskt första projekt inom programmering då man kan börja smått och lätt, och utöka det ganska stort senare.