Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用CSS选择Python中的元素范围_Python_Css - Fatal编程技术网

使用CSS选择Python中的元素范围

使用CSS选择Python中的元素范围,python,css,Python,Css,我有一张28排的桌子。我试图只选择包含数据的25行,跳过第一个页眉行和最后两个页脚行。以下选择器在Firefox的Web控制台中工作,但在Python中返回0行 from lxml.cssselect import CSSSelector sel = CSSSelector('table tr:nth-child(n+2):nth-child(-n+26)') 如何选择元素范围?看起来lxml.cssselect中没有实现第n个子范围。 相反,您可以使用Python漂亮的切片语法: from

我有一张28排的桌子。我试图只选择包含数据的25行,跳过第一个页眉行和最后两个页脚行。以下选择器在Firefox的Web控制台中工作,但在Python中返回0行

from lxml.cssselect import CSSSelector
sel = CSSSelector('table tr:nth-child(n+2):nth-child(-n+26)')

如何选择元素范围?

看起来lxml.cssselect中没有实现第n个子范围。 相反,您可以使用Python漂亮的切片语法:

from lxml.cssselect import CSSSelector
from lxml.etree import fromstring
# Document with table, containing header, three data rows and two footer rows:
doc = fromstring('''<table><tr><td>header</td></tr><tr><td>Data 1</td></tr><tr><td>Data 2</td></tr><tr><td>Data 3</td></tr><tr><td>footer1</td></tr><tr><td>footer2</td></tr></table>''')
sel = CSSSelector('table tr')
rows = sel(doc)[1:-2] # remove header, footer1, footer2 from result
for tr in rows:
    print tr.getchildren()[0].text

你仍然可以选择全部,然后删除那些你不需要的,对吗?你确定
nth child
选择器受
lxml.cssselect
支持吗?@kecer如果可能的话,我更喜欢在CSS选择器中执行@Alik Yes,
'table tr:nth child(n+2)
工作,但是链接另一个
nth child
不工作。
Data 1
Data 2
Data 3