Python Scrapy无法从类中提取文本

bul*_*uly 7 css python css-selectors scrapy python-2.7

请看这个HTML代码:

<header class="online">
                        <img src="http://static.flv.com/themes/h5/img/iconos/online.png"> <span>online</span> 
            <img src="http://static.flv.com/themes/h5/img/iconos/ojo16.png"> 428                        <p>xxfantasia</p>
</header>
Run Code Online (Sandbox Code Playgroud)

我想在里面得到文本(在这种情况下是428).我用过这个:

        def parse(self, response):
            sel = Selector(response)
            cams = sel.css('header.online')
            for cam in cams:
                  print cam.css('text').extract()
Run Code Online (Sandbox Code Playgroud)

我想我已经使用了正确的css选择器,但我得到了空的结果.

有帮助吗?

pau*_*rth 21

CSS选择器通常不具有提取文本内容的语法.

但Scrapy使用::text伪元素扩展CSS选择器,所以你想使用cam.css('::text').extract()它应该给你相同的东西cam.xpath('.//text()').extract()

注意:Scrapy还添加了::attr(attribute_name)功能伪元素来提取属性值(这对标准CSS选择器来说也是不可能的)

  • 您可以使用Python的`strip()`和`filter()`方法,例如:`filter(bool,[e.strip()for cam in cam.css('header.online::text').extract() ])` (2认同)