Webscraping bei lokaler HTM Seite

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
FelixAE7
User
Beiträge: 5
Registriert: Samstag 15. Juli 2023, 11:15

Guten Tag liebes Forum,

ich habe eine Solarsteuerung, welcher ich eine HTML Datei füttern kann und diese die dann innerhalb des Heimnetzwerkes anzeigt. Ich erreiche die Website dann über die IP: http://192.168.178.170/GRAFIK.htm und sehe dort verschiedenste Sensorwerte, sowie ein bisher recht provisorisches Bild von meiner Anlage. Da ich mir die Daten nun unter anderem in einer Datenbank speichern möchte, wollte ich mir einen kleinen Webscraper basteln. Mein Problem dabei ist jetzt jedoch, dass ich mit meinem Webscraper nicht das ausgegeben bekomme was ich auf der Website sehe, sondern nur Konfigurationen...
Wie komme ich an die Sensordaten?

Hier einmal ein Bild von der Website:
Bild

Und hier der Code von meinem Webscraper:

Code: Alles auswählen

import requests
from bs4 import BeautifulSoup


def scrapeInformation():
    # Website BL-Net
    url = "http://192.168.178.170/GRAFIK.htm"
    response = requests.get(url)
    soup = BeautifulSoup(response.text, "html.parser")


    print(soup)
Als Ergebnis erhalte ich:

Code: Alles auswählen

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html><head><meta content="text/html;charset=utf-8" http-equiv="content-type"/><meta content="0" http-equiv="expires"/><style type="text/css">body {font-size: 14px; font-family: Verdana, Arial, Helvetica, sans-serif; background-repeat: no-repeat;} #g {position: relative;}#pa {top: 0px; left: 0px; position: absolute;}#p {top: 0px; left: 0px; position: absolute;} </style><script type="text/javascript">function sd (){document.title = this.data.Title; document.getElementById("g").style.width = this.data.Width; document.getElementById("g").style.height = this.data.Height; document.getElementById("pa").style.width = this.data.Width;document.getElementById("pa").style.height = this.data.Height;document.getElementById("p").src = this.data.GraphicFile; var rT = this.data.AutoRefreshTime; if(rT>29)window.setInterval("javascript:this.data.location.reload()", rT*1000); var rlt = this.data.RefreshLink;if(rlt!="") {var rL = document.createElement('a');rL.href="javascript:this.data.location.reload()"; rL.appendChild(document.createTextNode(rlt)); document.getElementById("rld").appendChild(rL);}} </script></head><body onload="sd ()"> <div align="center"><div id="g"> <img border="0" id="p" src=""/> <iframe allowtransparency="yes" frameborder="0" id="pa" name="data" scrolling="no" src="GRAFIK1.htm"></iframe></div></div><div align="center" id="rld"></div></body></html> 

Und darin sind die Sensordaten nicht vorhanden...

Ich hoffe ihr könnt mit meiner Beschreibung etwas anfangen
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

Die Daten befinden sich in einem <iframe> unter der Seite "GRAFIK1.htm".
FelixAE7
User
Beiträge: 5
Registriert: Samstag 15. Juli 2023, 11:15

Sirius3 hat geschrieben: Samstag 15. Juli 2023, 12:22 Die Daten befinden sich in einem <iframe> unter der Seite "GRAFIK1.htm".
Vielen Dank für die Antwort!
Wie kann ich auf diesen iframe zugreifen?
Ich bin noch recht neu in der Materie.
Benutzeravatar
__blackjack__
User
Beiträge: 13116
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@FelixAE7: Gar nicht, Du hast da ja keinen Browser. Die Informationen stehen in der `GRAFIK1.htm`. *Die* musst Du scrapen. Bezüglich HTML könntest Du hier reinschauen: https://wiki.selfhtml.org/wiki/SELFHTML
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
FelixAE7
User
Beiträge: 5
Registriert: Samstag 15. Juli 2023, 11:15

__blackjack__ hat geschrieben: Samstag 15. Juli 2023, 17:14 @FelixAE7: Gar nicht, Du hast da ja keinen Browser. Die Informationen stehen in der `GRAFIK1.htm`. *Die* musst Du scrapen. Bezüglich HTML könntest Du hier reinschauen: https://wiki.selfhtml.org/wiki/SELFHTML
Achso alles klar! Danke für die Antwort, jetzt klappts :)
nezzcarth
User
Beiträge: 1636
Registriert: Samstag 16. April 2011, 12:47

Hast du denn geprüft, ob die Daten nicht auf eine andere, standardisierte Art und Weise aus dem System bekommst? Web Scraping ist fehleranfällig und das Mittel der letzten Wahl, wenn sonst nichts funktioniert.
Antworten