Требуется атрибут «значение». В зависимости от вашего полного HTML вы можете сократить селекторы.
from bs4 import BeautifulSoup as bs
import csv
soup = bs(your_html, 'lxml')
with open("data.csv", "w", encoding="utf-8-sig", newline='') as csv_file:
w = csv.writer(csv_file, delimiter = ",", quoting=csv.QUOTE_MINIMAL)
w.writerow([i.text for i in soup.select('.form-group label')])
w.writerow([i['value'] for i in soup.select('input.aspNetDisabled')])
Определенные элементы:
soup = bs(your_html, 'lxml')
items = ['"Class ID:"','"Serial Number:"','"Hostname:"']
items = ','.join(items)
nodes = [i['value'] for i in soup.select(f'label:contains({items}) + .aspNetDisabled')]
headers = [i.text for i in soup.select(f'label:contains({items})')]
with open("data.csv", "w", encoding="utf-8-sig", newline='') as csv_file:
w = csv.writer(csv_file, delimiter = ",", quoting=csv.QUOTE_MINIMAL)
w.writerow(headers)
w.writerow(nodes)