/前言/今天介绍Scrapy中的另一种选择器,也就是大家经常听到的CSS选择器。/CSS基础/CSS选择器和XPath选择器的功能相同,都是帮助我们定位网页结构中的特定元素,只是在语法表达上有所区别。XPath选择器已经可以帮助我们提取信息了,为什么还要学习CSS选择器呢?萝卜青菜各有喜好,不同知识背景的朋友都可以提取网页信息。只要是会捉老鼠的猫,就是好猫。同样,只要能提取信息,无论是正则表达式、BeateafulSoup、XPath选择器还是CSS选择器,都是不错的选择器,只是在效率和难度上是不一样的。另外,对于前端的朋友来说,CSS选择器对他们来说就简单多了。CSS选择器非常强大。从实用性的角度,下面介绍一些比较常用的CSS选择器语法。它们比较简单,但也是非常实用的语法。希望大家能够牢牢把握。时间会事半功倍。有了上面的CSS基础,下面我们来进行实际的应用。/实际应用/还是以之前的网站为例,我们的目标数据是标题、发布日期、主题、正文内容、点赞数、收藏数、评论数等。1.关于标题部分,我们分析之前我们用XPath表达式的时候,得到了一个唯一的定位标签,这里就不多说了,如下图。2、仍然使用scrapyshell的调试方式辅助,结合上面的基本CSS语法,标题的具体CSS表达如下图所示。需要注意的是,在CSS中获取标签文本内容的方式是在CSS表达式后面加上“::text”。请记住,这里有两个冒号,这与XPath表达式不同。这个表达式看起来比XPath表达式更简洁,所以在某些情况下,如果你觉得CSS选择器的表达式比XPath表达式更短或者比较容易理解,可以先选择CSS选择器。没有具体的要求,大家可以根据自己的喜好来选择,反之亦然。当然,你也可以在一个爬虫文件中同时使用两个或多个选择器。3、接下来就是提取发布日期,这还是一种交互方式,实现网页与源码的交互。标签“entry-meta-hide-on-mobile”是全局唯一的,可以很容易定位到元素,如下图所示。4、根据网页的结构,我们可以很容易的写出发布日期的CSS表达式。我们可以先在scrapyshell中进行测试,然后将选择器表达式写入爬虫文件中。详情如下图所示。5、关于文章主题标签的CSS表达,在网页结构上可以看到是在日期的下方,如下图。6、通过更改发布日期的CSS表达式,可以得到文章的主题标签。文章主题标签在a标签下,如下图所示。获取整个列表后,使用join函数将数组中的元素用逗号连接起来,生成一个新的字符串tags,然后写入到Scrapy爬虫文件中。7.点赞数,分析方法同上。找到唯一的标签“vote-post-up”来定位数据。8、点赞数在h10标签下,CSS表达式根据网页结构写。调试过程如下图所示。取出的点赞数是一个字符串,需要使用int()转换成数字。/总结/本文基于CSS的理论基础。主要介绍了CSS选择器的简单语法以及CSS选择器的使用,收集相关数据。下一篇文章会继续分享CSS表达式的数据采集方法。学习有帮助。如果想深入了解Python,可以参考学习网站:http://pdcfighting.com/,点击阅读原文,可直接前往~
