Недавно начал работать с библиотекой Scrapy.Я пытаюсь почистить веб-сайт, на котором есть несколько разных таблиц для каждого продукта, который они продают.В конце концов, я буду использовать данные для заполнения атрибутов объекта.Сейчас мне просто нужно извлечь его в формат JSON.
Вот пример таблицы:
<table id="table_1">
<tr id="row_1">
<td>cell_1</td>
<td>cell_2</td>
<td>cell_3</td>
</tr>
<tr id="row_2">
<td>cell_4</td>
<td>cell_5</td>
<td>cell_6</td>
</tr>
<tr id="row_n">
<td>cell_x</td>
<td>cell_y</td>
<td>cell_z</td>
</tr>
</table>
Каждый столбец представляет отдельный элемент, то есть маленькие, средние или большие футболки.,В приведенной выше таблице будет 3 элемента, поэтому элементы будут выглядеть следующим образом:
Item 1 {
row_1:cell_1
row_2:cell_4
row_n:cell_x
}
Item 2 {
row_1:cell_2
row_2:cell_5
row_n:cell_y
}
Item 3 {
row_1:cell_3
row_2:cell_6
row_n:cell_z
}
Это хорошо структурированные таблицы без «пропущенных» или «лишних» ячеек, хотя количество строк и столбцовпроизвольно.
Сложность, с которой я столкнулся при использовании объекта Предмета Scrapy, так как для этого требуется, чтобы мой класс Предметов определял количество полей перед очисткой, а не на основе таблицы.У меня есть сотни таблиц, над которыми я хочу выполнить этот процесс.
Спасибо, что прочитали это далеко, любая помощь приветствуется.:)
РАЗРЕШЕНИЕ: @warawuk Спасибо за вашу помощь.Я воспользовался твоим предложением и получил тройной вложенный список.Возможно, не идеально, но достаточно просто извлечь значения, так как я продолжаю работать с ними:
{"tRows":
[[["row1"], ["cell1", "cell2"]]
[["row2"], ["cell3", "cell4"]]
[["row3"], ["cell5", "cell6"]]
[["row4"], ["cell7", "cell8"]]] x100s of tables
}
Чтобы справиться с произвольным числом строк, я использовал регулярное выражение для извлечения идентификаторов из каждой строкии посчитай их.Простой цикл, использующий диапазон (len (rowNames)), плюс некоторая конкатенация строк завершили работу.