Я проанализировал таблицу с этим кодом
response = urllib.request.urlopen(url)
html = response.read()
soup = BeautifulSoup(html, 'html.parser')
table = soup.find("table", attrs={"class":"table table-condensed table-bordered"})
datasets = []
for row in table.find_all("tr")[1:]:
dataset = (td.get_text() for td in row.find_all("td"))
print (tuple(dataset))
datasets.append(dataset)
print("___________________________________\n")
print(tuple(dataset))
print("___________________________________\n")
print("parsing\n")
это дает
('A1 ', '- ', '- ', '- ', '- ', ' -\n ')
('A2', '- ', '- ', '- ', '- ', ' -\n ')
('A3', '- ', '- ', '- ', '- ', ' -\n ')
('A4', ' 1 W ', ' 50.1 Hz ', ' 0 V ', ' 24 °C ', ' 2018-09-12 19:05:49\n ')
('A5', ' 1 W ', ' 0 V ')
наборы данных результатов пусты
()
Я бы хотел, но результаты в массиве вроде бы, чтобы я мог получить доступ к каждой строке / столбцу, но
и выяснить
if datasets[3][0]=='A4' print (datasets[3][2])
почему, если я изменяю код и удаляю печать (tuple (набор данных)), код работает лучше (хотя это не так, как я ожидал), но я могу иметь заполненные наборы данных, а не пустой, как очевидно:
datasets = []
for row in table.find_all("tr")[1:]:
#dataset = dict(zip(headings, (td.get_text() for td in row.find_all("td"))))
dataset = (td.get_text() for td in row.find_all("td"))
datasets.append(dataset)
#print (tuple(dataset))
print("___________________________________\n")
print(list(datasets[3]))
print(list(datasets[4]))