/前言/在上一篇文章中,我们讲述了网页的结构和XPath表达式语法知识。有兴趣的朋友可以戳这篇文章:网页结构介绍和Xpath语法入门教程。我们了解到,XPath表达式最好通过网页分析和有针对性地选择独特的标签来定位,这样可以提高提取效率并且不容易出错。有了XPath表达式的基础,本文将使用XPath表达式来提取数据。具体教程如下,还是以之前的网站为例。我们的目标数据是标题、发布日期、主题、正文内容、点赞、收藏、评论等,具体教程如下。/具体实现/1.对于标题,在之前的文章中有提到。XPath表达式有很多种。您可以选择其中之一。在scrapyshell脚本下调试得到题目的提取方法,写入爬虫body文件。2、接下来就是提取发布日期,网页和源码的交互还是以交互的方式实现,如下图。3.而且,标签“entry-meta-hide-on-mobile”是全球唯一的,可以轻松定位元素。4、根据网页的结构,我们可以很容易的写出发布日期的XPath表达式。我们可以先在scrapyshell中进行测试,然后将选择器表达式写入爬虫文件中。详情如下图所示。这里有一些不纯的信息,需要用strip()和replace()函数去除多余的不纯,让日期回归“干净”。5、文章主题标签的Xpath表达式,在网页结构上可以看到是在日期的下面,如下图。因此,通过改变发布日期的XPath表达式,可以得到文章的主题标签。6、文章的topic标签在a标签下,如下图。获取整个列表后,使用join函数将数组中的元素用逗号连接起来,生成一个新的字符串tags,然后写入到Scrapy爬虫文件中。7.点赞数,分析方法同上。找到唯一的标签“vote-post-up”来定位数据。8、细心的朋友可能看到class标签中并不是只有“vote-post-up”属性,所以一开始XPath表达式匹配的内容是空的。这里安利一个小技巧。如果标签中有多个属性,并且属性是唯一的,可以使用contains函数来辅助。用法是'//span[contains(@class,"vote-post-up"),一定要多练习,不然很容易忘记。根据网页结构编写XPath表达式,调试过程如下图所示。取出的点赞数是一个字符串,需要使用int()转换成数字。未完待续~~~,下一篇继续分享XPath表达式数据采集方法。/总结/本文基于XPath的理论基础,主要介绍了利用Scrapy爬虫框架中的XPath选择器提取网页中目标数据的方法,为后续抓取全网数据做铺垫。更多精彩操作将在下一篇文章中呈现。希望对大家的学习有所帮助。
