今天是持续写作的第 19 / 100 天。
如果你有想要交流的想法、技术,欢迎在评论区留言。
很多网站都是下拉滚动条到底部之后,继续加载数据,尤其是对于很多手机 Web 站点,这种情形更多,使用了 Web Scraper 之后,你会发现这种网站真的好容易好容易抓取,写完就等着数据到来就好了。
此系列教程涉及图片比较多,学习的时候大量的依赖实操,所以在后续本系列内容将转换为视频载体提供给大家
优快云 下载网站分析
本次要模拟抓取的网站是 优快云 下载频道,该页面是下拉到网页底部进行数据的加载。
目标数据就是肉眼可视范围内的数据。
写好爬虫基本配置之后,在选择器页面重点设置的是 Type
,选择 Element scroll down
,注意该内容选择之后和 Element
一样,也是选择了一个父级标签。
该内容设置好之后,在设置好子选择器就会对数据进行抓取了,最终的爬虫结构如下图所示。
代码运行之后,发现一个比较大的问题,就是滚动页面一致在爬取数据,爬虫程序停止不了了。
Web Scraper 爬虫停止方式
方式一、断网
如果爬虫运行过程中不想抓了,但是已经抓取到的数据还想保存,那可以进行的操作时断开网络。
- 如果你是 WiFi ,就关闭无限网络;
- 如果是有线,就断开有线网卡;
断开网络以后,Web Scraper 监测到网络没有响应,就会主动关闭并将已经抓取下来的数据保存。
不过这个操作显得有那么一丝丝的诡异。
方式二、Network Offline
在打开的爬虫窗口中,点击 F12 调出开发者工具,切换到 Network 视图,勾选 Offline,立即完成断网,Web Scraper 会自动停止抓取。
一定要注意使用开发者工具是在爬取的小窗口里面,不是在你默认的浏览器里面。
方式三、使用 CSS 伪类
这里用到一点点编程的概念了,不过好在解决办法可以算作是一个小技巧,不需要太多的编程知识,很多童鞋都可以掌握。
在 Element
的 Selector
后面加上 :nth-of-type(-n+number)
,如果抓取 100 条数据,则把 number
改为 100,200 条数据则改为 200。
再次运行你的程序,等待数据爬取到本地来吧。运行代码之后,数据保存了 200 条在本地,爬取完成。
优快云 推荐博客抓取
在使用 优快云 博客的推荐页时,数据也是滚动加载的,既然是滚动加载,那就可以抓取吖。
按照下图设置好 1,2,3,4,5。
父级选择器设置完毕之后,将子选择器依次添加。最终的爬虫结果如下图所示。
爬虫运行之后就可以等着数据存储了,不过我应该是忘记设置抓取多少条数据了,所以就看着浏览器滚啊滚。只能手动停止啦,运行导出数据即可。
导出 Web Scraper
Web Scraper 还有一个比较强大的能力,就是写好的爬虫分享给别人,而且分享方式非常简单,点击下图所示内容。
在出现的页面中,复制爬虫设置,例如刚才写好的爬虫导出的内容如下:
{"_id":"csdn","startUrl":["https://blog.youkuaiyun.com/"],"selectors":[{"id":"items","type":"SelectorElementScroll","parentSelectors":["_root"],"selector":"li[data-type='blog']","multiple":true,"delay":"1000"},{"id":"title","type":"SelectorText","parentSelectors":["items"],"selector":"h2 a","multiple":false,"regex":"","delay":0},{"id":"author","type":"SelectorText","parentSelectors":["items"],"selector":".name a","multiple":false,"regex":"","delay":0},{"id":"like","type":"SelectorText","parentSelectors":["items"],"selector":".is_digg span.num","multiple":false,"regex":"","delay":0},{"id":"view","type":"SelectorText","parentSelectors":["items"],"selector":".read_num span.num","multiple":false,"regex":"","delay":0},{"id":"comment","type":"SelectorText","parentSelectors":["items"],"selector":".common_num span.num","multiple":false,"regex":"","delay":0}]}
导入 Web Scraper
导入也非常简单,在创建 sitemap 选项卡下选择导入,复制刚才导出的内容,你也可以从网上寻找其它人分享的爬虫。
写在后面
滚动爬取,除了速度有点慢以外,其它都挺好的,一般数据量不大的时候,都可以用这种办法爬取。
想学 Python 编写语言写爬虫,可以订阅橡皮擦专栏哦~
如果你想跟博主建立亲密关系,可以关注同名公众号 梦想橡皮擦,近距离接触一个逗趣的互联网高级网虫。
博主 ID:梦想橡皮擦,希望大家点赞、评论、收藏。