Когда вы говорите это:
table = page.css('table')
вы захватываете обе таблицы, а не только стол верхнего уровня. Таким образом, вы можете либо вернуться к корню документа и использовать селектор, который соответствует только строкам в первой таблице, как говорит Mosch, или вы можете исправить table
, чтобы он был только внешней таблицей с чем-то вроде этого:
table = page.css('table').first
trs = table.xpath('./tr')
или даже это (в зависимости от реальной структуры HTML):
table = page.xpath('/html/body/table')
trs = table.xpath('./tr')
или, возможно, один из них для table
(еще раз спасибо Phrogz):
table = page.at('table')
table = page.at_css('table')
# or various other CSS and XPath incantations