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“abcdefxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxlstlllxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
在[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']