前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >左手用R右手Python系列——动态网页抓取与selenium驱动浏览器

左手用R右手Python系列——动态网页抓取与selenium驱动浏览器

作者头像
企鹅号小编
发布2018-01-03 15:24:08
1.6K0
发布2018-01-03 15:24:08
举报
文章被收录于专栏:企鹅号快讯企鹅号快讯

但是所有这些都是基于静态页面的(抓包与API访问的除外),很多动态网页不提供API访问,这样就只能寄希望于selenium这种基于浏览器驱动技术来完成。

好在R语言中已经有了selenium接口包——RSelenium包,这为我们爬取动态网页提供了可能。我在今年年初写过一个实习僧网站的爬虫,那个是使用R语言中另一个基于selenium驱动的接口包——Rwebdriver来完成的。

当时技术不太成熟,思路也比较幼稚,我使用了导航器硬生生的遍历了500页内容,虽然最后也爬完了所有数据,但是耗时较长(将近40分钟),效率比较低。(感兴趣的小伙伴儿可以参考下上面那篇,不过实习僧的官网近期有较大改版,现在爬取难度肯定要比当初难多了!那个代码可能无法使用了)

最近抽时间学习了下RSelenium包的相关内容,这里感谢陈堰平老师在R语言上海大会现场所做《用RSelenium打造灵活强大的网络爬虫》的演讲,虽然未达现场,但是有幸看完视频版,其中的几个细节解决了我近段时间的一些困惑,这里表示感谢。

陈堰平老师主讲:《用RSelenium打造灵活强大的网络爬虫》

http://www.xueqing.tv/course/88

一个老外关于RSelenium的入门视频(youtobe请自行访问外国网站):

https://www.youtube.com/watch?v=ic65SWRWrKA&feature=youtu.be

当前R语言中能做到解析动态网页的有以下几个包(欢迎补充):

RSelenium(推荐)

Rwebdriver(不很成熟)

seleniumpipes(结合RSelenium更高效)

rdom(高级封装,灵活性不够)

Rcrawler(支持多进程)

webshot(专门用于动态网页截图)

本节以下内容正式分享今日案例,目标是拉勾网(不要问为什么,因为之前我还没有爬过拉钩)!

在介绍案例之前,请确保系统具备以下条件:

本地有selenium服务器并添加系统路径;

本地有plantomjs浏览器并添加系统路径;

安装了RSelenium包。

因为涉及到自动化点击操作,Chrome浏览器倒腾一下午硬是在点击环节出故障,找到了原因,因为拉勾网页面很长,而下一页按钮不在默认视窗范围内,使用了js脚本控制滑动条失败,原因不明,看到有人用firefox浏览器测试成功,我还没有试过,这里改用plantomjs无头浏览器(无需考虑元素是否被窗口遮挡的问题。)

R语言版:

启动服务

构建自动化抓取函数:

运行抓取函数

Python:

启动服务

构建抓取函数

运行抓取程序

本文来自企鹅号 - 数据小魔方媒体

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文来自企鹅号 - 数据小魔方媒体

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档