Python 网页抓取器打印值'0.00'



我是新来的,我的硕士论文需要您的帮助。我需要将数据从充电器web界面保存到Excel文件。到目前为止,我可以调用web界面,也可以将数据保存在Excel列表中。但我总是得到"0"分。作为电压和电流的返回值,虽然数值是不断变化的。

这是我写的代码。和网页界面的截图。

提前感谢您的支持

import csv
import time
import requests
from bs4 import BeautifulSoup
import lxml
import datetime
# Hier den Wert end = '13.7' eintragen! für Spannung
end = '13.67'
def holedaten():
url = ('http://mcb:8080/')
r = requests.get(url, auth=('admin', 'mcb'))
web_content = BeautifulSoup(r.content, 'html.parser')
#time.sleep(1)
zeitaktuell = datetime.datetime.now()
datum = zeitaktuell.strftime("%d-%m-%Y")
uhrzeit = zeitaktuell.strftime("%H:%M:%S")
# Udev - Spannung vom Ladegerät
Udev = web_content.find(id='voltageset').text
# Ubatt - Spannung Batterie
Ubatt = web_content.find(id='voltage').text
# Ibatt - Strom Batterie
Ibatt = web_content.find(id='current').text
# Ahges - Ah-Zähler
Ahges = web_content.find(id='MCBAmpere').text
# mcbdauer - Aktuelle Dauer
mcbdauer = web_content.find(id='MCBRunTime').text
meineliste = [datum, uhrzeit, Udev, Ubatt, Ibatt, Ahges, mcbdauer]
#print(meineliste)
#print(Ahges)
#print(mcbdauer)
return meineliste

with open('real_data.csv', 'w', newline='')as csvfile:
condition = True
writer = csv.writer(csvfile, delimiter=';', quotechar='"', quoting=csv.QUOTE_MINIMAL)
tst = ['Datum', 'Uhrzeit', 'Udev', 'Ubatt', 'Ibatt', 'Ahges', 'mcbdauer', 'Identdauer', 'Batterie']
writer.writerow(tst)
while condition == True:
daten = holedaten()
# daten(2) wäre Udev; 0=datum 1=Uhrzeit 2=Udev 3=Ubatt...
bis = daten[3]
writer.writerow(daten)
print(daten)
#if bis <= end:
# condition = False
#print("Wert erreicht!")

我结果:

['14-10-2021', '10:59:01', '0.00', '0.00', '0.00', '', '']
['14-10-2021', '10:59:05', '0.00', '0.00', '0.00', '', '']
['14-10-2021', '10:59:08', '0.00', '0.00', '0.00', '', '']
['14-10-2021', '10:59:11', '0.00', '0.00', '0.00', '', '']
['14-10-2021', '10:59:14', '0.00', '0.00', '0.00', '', '']
['14-10-2021', '10:59:17', '0.00', '0.00', '0.00', '', '']

这是截图

电压和电流值安培小时和运行时间

查找对该数据的直接请求。试一试:

import csv
import time
import requests
from bs4 import BeautifulSoup
import lxml
import datetime
# Hier den Wert end = '13.7' eintragen! für Spannung
end = '13.67'
def holedaten():
url = ('http//mcb:8080/MCBStatus.xml')
xml_response = requests.get(url, auth=('admin', 'mcb'))
xml = xml_response.text
xml_content = BeautifulSoup(xml, 'lxml')

clock = xml_content.find('clock').text

datum = clock.split()[0]  # <--
uhrzeit = clock.split()[-1]  # <--
# Udev - Spannung vom Ladegerät
Udev = xml_content.find('voltageset').text  # <--
# Ubatt - Spannung Batterie
Ubatt = xml_content.find('voltage').text  # <--
# Ibatt - Strom Batterie
Ibatt = xml_content.find('current').text  # <--
# Ahges - Ah-Zähler
Ahges = xml_content.find('mcbampere').text
# mcbdauer - Aktuelle Dauer
mcbdauer = xml_content.find('mcbruntime').text
meineliste = [datum, uhrzeit, Udev, Ubatt, Ibatt, Ahges, mcbdauer]
#print(meineliste)
#print(Ahges)
#print(mcbdauer)
return meineliste

with open('real_data.csv', 'w', newline='')as csvfile:
condition = True
writer = csv.writer(csvfile, delimiter=';', quotechar='"', quoting=csv.QUOTE_MINIMAL)
tst = ['Datum', 'Uhrzeit', 'Udev', 'Ubatt', 'Ibatt', 'Ahges', 'mcbdauer', 'Identdauer', 'Batterie']
writer.writerow(tst)
while condition == True:
daten = holedaten()
# daten(2) wäre Udev; 0=datum 1=Uhrzeit 2=Udev 3=Ubatt...
bis = daten[3]
writer.writerow(daten)
print(daten)
#if bis <= end:
# condition = False
#print("Wert erreicht!")
#f1 = open("inFile", "r")  # open input file for reading

print('finished')

最新更新