Python Scrapy can';t获取伪类";:不是();

Python Scrapy can';t获取伪类";:不是();,python,css-selectors,scrapy,scrapy-spider,Python,Css Selectors,Scrapy,Scrapy Spider,可以写 content.css('.text>p::text').extract() 但是 这是行不通的。 它告诉我: SelectorSyntaxError: Expected ')', got <S ' ' at 15> SelectorSyntaxError:Expected'),已获取 是的,'.text:not(.text.text)>p::text'中的第15个字母是“”,但是如果不使用“”,我如何表达这个意思呢 更新 有嵌套的s,我想提取第一个正下方的所有s

可以写

content.css('.text>p::text').extract()
但是

这是行不通的。 它告诉我:

SelectorSyntaxError: Expected ')', got <S ' ' at 15>
SelectorSyntaxError:Expected'),已获取
是的,'.text:not(.text.text)>p::text'中的第15个字母是“”,但是如果不使用“”,我如何表达这个意思呢

更新 有嵌套的
s,我想提取第一个
正下方的所有
s

例如:

<div class='text comment'>
    <strong>abc</strong>
    <span>def</span>
    <p>xxxxxxxxxxxxx</p>
    <p>xxxxxxxxxxxxxxxxxxxxxxxxxxx</p>
    <div class='text sub_comment'>
        <strong>lst</strong>
        <span>lll</span>
        <p>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</p>
        <p>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</p>
    </div>
</div>

abc
def
XXXXXXXXXXXX

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

lst 微光 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

我想获取前两个
中的文本。我不能使用
.comment
.sub\u comment
来区分它们,因为它们在不同的情况下会发生变化,并且在外部标记中不一定是
comment
,在内部标记中不一定是
sub\u comment

试一试如何

所以你的css应该是:

".text:nth-child(1)>p"
在Scrapy中:

In [54]: from scrapy import Selector

In [55]: a
Out[55]: u"<div><div class='text comment'>    <strong>abc</strong>    <span>def</span>    <p>xxxxxxxxxxxxx</p>    <p>xxxxxxxxxxxxxxxxxxxxxxxxxxx</p>    <div class='text sub_comment'>        <strong>lst</strong>        <span>lll</span>        <p>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</p>        <p>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</p>    </div></div></div>"

In [56]: sel = Selector(text=a)

In [57]: sel.css(".text:nth-child(1)>p::text").extract()
Out[57]: [u'xxxxxxxxxxxxx', u'xxxxxxxxxxxxxxxxxxxxxxxxxxx']
[54]中的
:来自scrapy导入选择器
在[55]中:a
Out[55]:u“abcdefxxxxxxxxxxxx

xxxxxxxxxxxxxxxxxxxx

lstlllxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 在[56]中:sel=选择器(text=a) [57]中的sel.css(“.text:nth child(1)>p::text”).extract() 输出[57]:[u'xxxxxxxxxxxx',u'xxxxxxxxxxxxxxxxxxxxxxxx']

在(向下滚动到第22段)中有很好的第n个孩子的解释和演示。

我对你的问题不太清楚,你能给出你试图与这个选择器匹配的示例标记吗?@PawelMiech我更新了问题。我使用xpath解决了这个问题。你认为有css解决方案吗?
In [54]: from scrapy import Selector

In [55]: a
Out[55]: u"<div><div class='text comment'>    <strong>abc</strong>    <span>def</span>    <p>xxxxxxxxxxxxx</p>    <p>xxxxxxxxxxxxxxxxxxxxxxxxxxx</p>    <div class='text sub_comment'>        <strong>lst</strong>        <span>lll</span>        <p>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</p>        <p>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx</p>    </div></div></div>"

In [56]: sel = Selector(text=a)

In [57]: sel.css(".text:nth-child(1)>p::text").extract()
Out[57]: [u'xxxxxxxxxxxxx', u'xxxxxxxxxxxxxxxxxxxxxxxxxxx']