这个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,如何解决?
更新
对于 id artical_comment_cnt
仅适用于全局
我的答案是
In [2]: response.css("span#artical_comment_cnt::text").extract_first()
Out[2]: '0'
最佳答案
你的选择器有一些错误。
要获得评论,您应该这样写:
>>> response.css(".float-r span#artical_comment_cnt::text").extract_first()
'0'
#artical_comment_cnt
代替.artical_comment_cnt
,#
是指定一个id,.
是一个类.
要获取 View ,需要指定,
您想要 div (.float-r) 元素中的 second 跨度,
nth-child(2)
将执行此操作。
>>> response.css("div.float-r span:nth-child(2)::text").extract_first()
'778'
span:nth-child(2)
而不是 span span
关于python - 如何使用css选择器获取跨度数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45634401/