Web scraper是一款Chrome爬虫插件,可在这个(谷歌学术访问插件更新)里面提到的插件搬运网站下载。半个小时基本上可以学会,学习资料主要来自:
功能有点过于简单,适合我这种小白使用。试了下用这个在学校图书馆网站上将展示的文章发表情况都爬了下来。
将练习过程中发现的一些要点予以记录
Table of Contents
分页内容的抓取
也就是怎么让爬虫来模拟我们浏览网页时候遇到分页的情况。一般常见的有四种展示分页的方式。
1. 通过下拉动作自动展示分页内容
这个可以在Add selector
中的Type
中选择Element scroll down
。这个其实是比较简单的一种方式,因为不需要点击的动作。
2. 通过点击“浏览更多”来展示分页内容
这个相对上一种略微麻烦一些。在Add selector
中的Type
中选择Element click
。在Click type
中选择Click more
,因为可能需要不止一次点击才能将内容完全加载。Click element uniqueness
这个选项是控制 Web Scraper 什么时候停止抓取数据的,比如当加载完成后,浏览更多
一般会变成没有更多
或者直接消失,所以其中的Unique text
即文字发生改变时可以作为终止抓取的信号。
3. 通过点击“页码”等分页器来实现分页时
有些网页会以如1-2-3-4···-1991
页码的方式来实现分页,这个时候需要对页码进行点击。这个时候在Add selector
中的Type
中选择Element click
。在Click type
中选择Click more
,同时在Click selector
中激活multiple
以选中所有页码。同时Also you need to add child selectors for the Element click selector that select data within each element,即其中的Selector
需要选中提取内容所在的Element容器;另外需要注意的是,这种方法的前提是after clicking a button the url doesn't change. Changes after hash tag # doesn't count。
4. 通过“下一页”等分页器实现分页,但是翻页后url会发生改变
这个时候就不能用3中的方式了,需要使用link选择器来实现翻页:
- 新建一个link selector,选中“下一页”或“后页”等按钮即可;
- 需要注意的是,这个link selector的Parent Selectors有两个,一个是第一页所在的页面,另一个是后续页面,即其本身。
抓取多级页面的内容
比如我们在_root
页面抓取了标题,还需要点击标题打开其链接后抓取正文内容,这个时候和抓取分页内容中的“通过“下一页”等分页器实现分页,但是翻页后url会发生改变”的情况是类似的,方法如下:
- 新建一个link selector,选中标题链接;
- 打开标题页面后,将url复制到Web scraper所在页面地址栏打开,然后通过建立子选择器选择需要抓取的内容。
实际抓取内容与预计抓取内容不一致
在使用中发现有的时候建立的selector抓取的内容和预计的内容不符合,参考了知乎上面一篇文章《研究生新生如何查找论文并下载参考文献?(2)》。这种情况一般是由于selector指向错误导致的,需要进行相应的修改将其定向到需要抓取的内容。