Страница имеет конструкцию
- база (заголовок)
- таблица с множеством строк
- база (заголовок)
- таблица с множеством строк
и т.д.
Вы получаете все заголовки в bases
и все строки в tables
как отдельные элементы, но вы должны получать таблицы как отдельные элементы, чтобы вы могли создавать пары (base, table), а затем вы должны получать строки из каждой таблицы и доходность с правильной base
В xpath я получаю tables
без tr
- поэтому я могу создавать пары (base
, table-with-all-its-rows
).
И тогда я могу получить строки из table
и получить его с base
.
Я не мог проверить это. Может быть, вам придется сначала пропустить base
- zip(bases[1:], tables)
bases = response.xpath('//table[@class="frq"]/tr')
tables = response.xpath('//*[@class="fl"]')
for base, tabel in zip(bases, tables):
rows = table.xpath('.//tr')
for row in rows:
yield {
'Frekans': base.xpath('.//td[3]/text()').extract_first(),
'Polarizasyon': base.xpath('.//td[4]/text()').extract_first(),
'Kapsam': base.xpath('.//td[6]/a/text()').extract_first(),
'SR': base.xpath('.//td[9]/a[1]/text()').extract_first(),
'FEC': base.xpath('.//td[9]/a[2]/text()').extract_first(),
'channel' : row.xpath('.//td[3]/a/text()').extract_first(),
'V-PID' : row.xpath('.//td[9]/text()[1]').extract_first(),
'A-PID' : row.xpath('.//td[10]/text()[1]').extract_first(),
}