我正在逐行处理一个表,需要嗅探
id
行数:
<table id="tbl">
<tr id="row_1">
<td id="cell_1">...</td>
</tr>
<tr id="row_2">
<td id="cell_2">...</td>
</tr>
</table>
所以我的代码看起来像:
def parse_table(self, response):
rows = response.css('#tbl > tr')
for row in rows:
rowid = row.css('::attr(id)')
if rowid.extract_first().startswith('row'):
...
然而,这样,第二个呼叫
.css()
给我所有后代的身份证
row
,不仅仅是它的直系子女也就是说,对于上面的示例html,它返回
"cell_1"
以及
"row_1"
. 如何确定链子的范围
css()
所以它只作用于指定行的直接子代?
我试过用
:scope
伪类,但这似乎不受Scrapy支持,并且
:root
没有结果。
或者,我可以得到
身份证件
属性而不通过CSS?