Я пытаюсь извлечь содержимое таблицы изнутри нашей системы ERP и сохранить ее в словаре.
Сложность заключается в том, что ячейки объединяются при повторяющихся значениях, таких как Part No
, Description
и Operation
в скриншоте.
Мне бы очень хотелось узнать, как это сделать Python, все мои идеи приведут к королевской путанице в том, как это сделать.
Ожидаемым результатом будет список словарей с словарь для каждой строки / элемента в ведомости материалов. Например, элемент верхней строки будет выглядеть следующим образом, а остальные строки будут являться дополнительными записями в списке:
bom_data = [
{'bom_component_data':{ 'Component Part/Item': 'WP106519 Rev.A'
, 'Component Name': 'Disk'
, 'Sub Components': 1
, 'Active': True
, 'Quantity': '1 pcs/pc'
, 'Operation': '75-Issue Material'
, 'Description': 'Disk'
, 'Part_No': 'Part_No_from_page'}
}
]
Я смог определить элементы, представляющие интерес на странице, и покажу их в фрагмент кода ниже. Во-первых, это заголовки столбцов, обозначаемые тегом th
:
print('Table column headers')
bom_table_headers = driver.find_elements_by_tag_name('th')
for bom_table_header in bom_table_headers:
print(bom_table_header.text)
Возвращает:
<Table title> Rev.B Bill of Materials
Part No
Description
Operation
Quantity
Component Part/Item
Component Name
Sub Components
Active
Note
Я не хочу брать <Table title> Rev.B Bill of Materials
, но остальные из них предметы, которые я хочу, как ключи в моем словаре.
В следующем фрагменте показаны заголовки строк таблицы, обозначенные tr
:
print('Table row contents')
bom_table_contents = driver.find_elements_by_tag_name('tr')
for bom_table_content in bom_table_contents:
print(bom_table_content.text)
Возвращает:
Table row contents
BackWikiAddUpload
WP106295 Rev.B Bill of Materials
Part No Description Operation Quantity Component Part/Item Component Name Sub Components Active Note
WP106295 Rev.B Disk 75-Issue Material 1 pcs/pc WP106519 Rev.A Disk 1
Disk 130-Turn OD, Front Face 0.166 each/pc WS100028-22-22-07 Box,Plywood,Slip-Over,22x22x7 per Standard Drawing WS100028
1 each/pc WS100039 Pad, Corrugated, Double wall, 21x21x.25, Plain 200
0.042 each/pc WS100021 Pallet,Reconditioned Wood,48 x 48 Runner Type,2-Way Entry, 3" Wing Style. Double runners in the center and 5/8 top boards.
И последний фрагмент показывает содержимое ячейки, Обозначается td
:
print('Table cell contents')
table_row_items = driver.find_elements_by_tag_name('td')
for table_row_item in table_row_items:
print(table_row_item.text)
Возвращает:
Table cell contents
BackWikiAddUpload
WP106295 Rev.B
Disk
75-Issue Material
1 pcs/pc
WP106519 Rev.A
Disk
1
Disk
130-Turn OD, Front Face
0.166 each/pc
WS100028-22-22-07
Box,Plywood,Slip-Over,22x22x7 per Standard Drawing WS100028
1 each/pc
WS100039
Pad, Corrugated, Double wall, 21x21x.25, Plain 200
0.042 each/pc
WS100021
Pallet,Reconditioned Wood,48 x 48 Runner Type,2-Way Entry, 3" Wing Style. Double runners in the center and 5/8 top boards.
Любая помощь или указатели приветствуются, спасибо.