这个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&aid=20192&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'
答案 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)