Использование Scrapy для анализа произвольного количества строк (пар ключ: значение) в таблице htmlPython

Программы на Python
Anonymous
Использование Scrapy для анализа произвольного количества строк (пар ключ: значение) в таблице html

Сообщение Anonymous »

Недавно начал работать с библиотекой Scrapy. Я пытаюсь получить данные с веб-сайта, на котором есть несколько разные таблицы для каждого вида продуктов, которые они продают. Со временем я буду использовать данные для заполнения атрибутов объекта. На данный момент мне просто нужно извлечь его в формат JSON.

Вот пример таблицы:

Код: Выделить всё


cell_1
cell_2
cell_3


cell_4
cell_5
cell_6


cell_x
cell_y
cell_z


Каждый столбец представляет отдельный товар, например, маленькие, средние или большие футболки.
В таблице выше будет 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 Item, поскольку для этого требуется, чтобы мой класс Item определял количество полей перед очисткой, а не для каждой таблицы. . У меня есть сотни таблиц, над которыми я хочу выполнить этот процесс.

Спасибо, что дочитали до этого места, любая помощь приветствуется. :)

РЕШЕНИЕ: @warawuk Спасибо за помощь. Я воспользовался вашим предложением и получил тройной вложенный список. Возможно, это не идеально, но извлечь значения по мере продолжения работы с ними достаточно тривиально:

Код: Выделить всё

{"tRows":
[[["row1"], ["cell1", "cell2"]]
[["row2"], ["cell3", "cell4"]]
[["row3"], ["cell5", "cell6"]]
[["row4"], ["cell7", "cell8"]]] x100s of tables
}
Чтобы справиться с произвольным количеством строк, я использовал регулярное выражение для извлечения идентификаторов из каждой строки и их подсчета. Простой цикл с использованием range(len(rowNames)), а также некоторой конкатенации строк завершил работу.

Подробнее здесь: https://stackoverflow.com/questions/975 ... -an-html-t

Вернуться в «Python»