WebScraper实际运用

豆瓣读书文件爬取

可以说是很典型的经常被爬的豆瓣了。

网页分析

在网站爬取之前,首先要明确,需要爬取的内容是哪些,这个很重要。其次,需要搞清楚爬虫运行的思路,遵循什么样的原则,是单面爬取,还是网站循环爬取,还是内外链跳转爬取。

本次,通过豆瓣读书评分9分以上的榜单来实现爬取。本次,我想要爬取的内容包括书名、评分、评分人数、以及其摘要信息(即作者、出版社、出版年)。

正式创建

通过F12打开开发者工具,打开WebScraper插件工具。单击create new sitemap栏下的Create sitemap创建一个新的站点地图。
Sitemap name条目后面自定义一个名称,在Start URL栏后面粘贴豆瓣读书的网页地址。接着,就可以看到下图。

create.png

点击图中的Add new selector按键进入下图界面。

Add selector.png

Id一栏随意填写,Type类型根据前面描述的内容发现这是一个由多种不同Html元素所组成的混合型内容,因此需要选择Element,随后在Selector栏点击Select,点击我们想要爬取的主要区域块内容。全部设置完成后会看到下图所示内容。然后点击Done,即可完成初步设置,然后点击Save保存以上设置内容。

selector.png

此时,回到初始界面,可以看到下图所示内容,若看到的界面不一致,请重新检查以上步骤是否出错。

first view.png

目前为止,已经完成了基本的设置,即在这个新建的selector里面已经通过设置element元素,囊括了前面我们提到的信息,接下来就是将这些信息分块存储

点击上图中的content行的任意区域,在界面中,继续点击Add new selector,然后重复上述步骤,需要注意的是,Id栏不要重复,Type栏目因为爬取的主要内容以文本为主,所以对应的需要改成Text。分层设置内容,对想要爬取的内容在该content栏下设置完毕。设置后,如图所示。

abstract.png
rank.png
title.png
totalnum.png
trials.png

打开selector graph可以看到以下图形。

graph.png

目前为止,可以回到content界面(就是只有一行内容的),点击Data preview,但是会发现一个很奇怪的问题,爬虫仅爬下了当前界面的内容。接下来就要对此问题进行探究了。

网页循环爬取,获取所有的内容。通过分析豆瓣读书的url(提醒:后续文章中的URL地址是截断的,实际运用应当输入完整的URL地址)可以发现第一页的页面URL为start=0&sort=seq&sub_type=
第二页的URL为start=25&sort=seq&sub_type=
网址参数里只有start=后面的数值变化了,在总结中可以得出该数字是每页的第一本书的序号。所以只需要在sitemap中将Start URL重新设置即可。点击edit metadatastartURL中输入start=[0-475:25]&sort=seq&sub_type=,即可。
start=后面的参数表示以25为等差的数列关系。到此,就可以开始爬取数据了。当然,为了防止爬取速度太快,被网站的反爬机制阻挡,可以适当的设置父节点的delay时长。

扩展补充

以上,就简单的介绍了关于如何爬取URL中有参数的网站,但是有些网站采取的是滑动向下刷新的内容,也有加载更多的内容。这些我们下节讨论。

在此基础之上,再讲解一下如何不使用网站自带的URL变化去获取网站下一页的内容。

网站的每一页内容都包含着某些信息,当我们想要获取整个网站的信息的时候,首先,需要有能力遍历网站的所有网页,其次才是搜集网页的内容。

按照这种思路,在以上内容的基础上,进行修改。当然,将修改starturl部分的内容复原到只能单页爬取的状态。

然后在content父节点的目录下创建一个新的selector,并将其进行命名,此处的type类型为link(即网页链接)。此时,我们就创建好了一个新的链接进行跳转。如下图所示。

pagenext.png

然后,我们需要对content这个selector下面的内容进行修改,将其父节点更改到刚刚新建的这个pagenext这个新建的节点上,这样就会形成一个围绕着网站下一页进行遍历的循环体。所以点击content的edit条目,在parent selector部分将父节点由_root更改为* _rootpagenext*两个。具体操作按住ctrl键然后点击项目即可完成。

content.png

此时,可以在selector graph里看到下图内容时,即意味着已经修改完成。

selector graph.png

到目前为止,已经完成了爬取豆瓣读书的所有设置,通过这个简单的例子,对该插件理解和运用也有了一个基本的了解。需要讲解的内容和思路也已经讲解完毕,而其他的内容设置则需要读者根据文档手册的内容,结合自己的需求去进行实际操作。

另外,文末附上本次爬虫的爬取数据的部分截图。并共享上自己的sitemap,读者可以在插件中通过导入该sitemap直接调用本次案例使用的所有例子,直接进行爬取。

dataview.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容