如何使用css选择器获取跨度数据?

时间:2017-08-11 11:43:36

标签: python css scrapy

这个html文件

<html>
 <head></head>
 <body>
  <div class="float-r"> 
   <span id="artical_comment_cnt"><i></i>0</span> 
   <span><i class="view"></i><script src="/cms/plus/count.php?view=yes&amp;aid=20192&amp;mid=17" language="javascript"></script>778</span> 
  </div>
 </body>
</html>

我想得到“0”和“778”,我的代码是

comments = response.css(".float-r span#artical_comment_cnt::text").extract()[0]  
views = response.css("div.float-r span span::text").extract_first().extract()[0]

但结果总是NULL,如何解决?

更新

标识artical_comment_cnt

仅限全局 我的回答是

In [2]: response.css("span#artical_comment_cnt::text").extract_first()
Out[2]: '0'

1 个答案:

答案 0 :(得分:2)

你在选择器中有一些错误。

要获得评论,您应该写:

<!DOCTYPE html>
<html lang="en">

    @include('site.includes.head')
    <body class="page-boxed page-header-fixed page-container-bg-solid page-sidebar-closed-hide-logo ">
        @include('site.includes.header')

        @yield('content')

        @include('site.includes.footer')
    </body>
</html>

>>> response.css(".float-r span#artical_comment_cnt::text").extract_first() '0' 代替#artical_comment_cnt.artical_comment_cnt用于指定ID,#用于类。

要获取视图,您需要指定,
你想要div(.float -r)元素中的第二个范围, .会做到这一点。

nth-child(2)

>>> response.css("div.float-r span:nth-child(2)::text").extract_first() '778' 代替span:nth-child(2)