欢迎光临散文网 会员登陆 & 注册

R语言:VOL1-爬取动态网页的方法

2020-02-19 21:13 作者:正版_月华JUN  | 我要投稿

其实想写B站专栏也有一段时间了,草稿箱里还躺着几篇写了一半的读书报告,但是万万没想到,写的第一篇专栏竟然是关于编程的2333333

也很偶然,正好有个朋友问能不能帮忙爬取数据,但是我没有爬取过动态网页的数据,就根据网上的教程整理了一下,然后增加了我自己爬取的实例。

一、R语言爬取动态网页的前期准备

R语言爬取动态网页需要用到的包可以使用"RSelenium"或者"Rwebdriver",这两个包都可以进行操作,是通过调用Selenium Server来模拟浏览器环境。

Selenium是一个用于网页测试的Java开源软件,它可以模拟浏览器的点击、滚动、滑动以及文字输入等操作[1]。

因为RSelenium可以直接在CRAN下载并安装(Rwebdriver包需要从gethub上下载并安装,相对来说比较麻烦),因此我使用的是RSelenium包进行动态网页的抓取。

install.packages("RSelenium")  #安装RSelenium包

library(RSelenium)  #加载RSelenium包

但是加载完RSelenium包之后,并不能直接使用,还需要添加相应的辅助的条件:

  • 安装JAVA并进行环境配置

  • 安装Selenium(运行Selenium需要java且配置好环境变量)

  • 安装浏览器与驱动组件

1.1 JAVA的安装与环境配置

目前网络上的教程大部分都是推荐安装JDK(Java Development Kit),但是实际上我们安装JRE(Java Runtime Environment)就足够用了。因为我自己的电脑上有现成的。

JAVA的安装可以去其官方网站下载:

  • https://www.java.com/zh_CN/download/win10.jsp【中文网站但只能下载window版的,行吧········】

  • https://www.java.com/en/download/manual.jsp【英文网站可以下载所有的】

下载完成后一步步的按照默认安装就可以了!!!!

环境变量配置:

网络上的很多教程都教给大家来配置环境变量,但是我在window10上下载安装完成JAVA之后实际测试不需要配置环境变量就可以了。

大家可以在命令提示符【win+R打开运行窗口,输入cmd,点击确定】界面,分别输入以下命令:

  • java    【查找java的命令是不是存在】

  • java -version    【查找java的版本】

  • javac     【注意javac是JDK特有的,如果你和我一样安装的是JRE就不需要】

如果以上命令都有正常的反应而不是提示命令不存在或者报错,那么说明JAVA就安装好了,不需要进行下面的环境变量的配置了,如果不行,那么按照以下的要求配置环境变量:

配置环境变量JAVA_HOME,【就是你安装JAVA的地址】

配置环境变量JAVA_HOME

配置环境变量PATH,【一般计算机上已经有PATH的环境变量了,只需要给他增加就好了】

  • %JAVA_HOME%\bin

实际上就是连接到JAVA的二进制文件目录

网络上有很多教程说增加的环境变量为如下:

%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

分号代表一个新的目录,但是实际上是不需要的,因为没有jre这个文件夹,可能是安装JDK带来的问题

PATH环境变量配置

配置环境变量CLASS_PATH

变量值 .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar

CLASS_PATH环境变量配置


三个变量设置完成后,打开cmd(命令提示符,用Windows的搜索搜cmd即可找到),输入javac,不报错即表示安装成功。

1.2 安装Selenium

Selenium的下载地址:https://selenium.dev/

你进入网址之后看到的界面是这样的:

selenium首页截图 2020.02.19

下载最新版的Selenium就好了。

目前最新版的下载下来名称为:selenium-server-standalone-3.141.59.jar

然后使用命令提示符【win+R打开运行窗口,输入cmd,点击确定】,进入selenium存放的路径,然后输入如下命令:

java -jar selenium-server-standalone-3.141.59.jar

开启selenium服务

出现:Selenium Server is up and running on port XXXX代表运行成功。

默认运行的port是4444。

如果出现报错可能是你的port 4444处于被占用的状态

请在运行后面的程序务必保持selenium在运行状态【即不要关闭这个窗口】,否则后面的R程序并不能正常运行

1.3 安装浏览器与驱动组件

我在这里推荐Firefox,当然Chrome也是可以的。【RSelenium中支持的浏览器有5种: chrome、firefox、htmlunit、internet explorer、iphone】。主要原因是Chrome你在国内不好安装,你是无法正常登陆其官网去下载Chrome浏览器的【但是我在某企鹅的电脑管家的软件管理中找到了Chrome浏览器的安装,我没试,大家看可以去试试能不能用~】。

在安装完Firefox浏览器之后,需要安装GeckoDriver用于驱动Firefox。

下载地址为:https://github.com/mozilla/geckodriver

然后请将下载后的文件安装在Firefox浏览器的安装路径下面

Firefox默认安装路径是:C:\Program Files\Mozilla Firefox

环境变量的配置如下图中倒数第二变量

配置PATH环境变量

如果以上都操作完毕,我们就可以运行愉快的编写R语言程序了。

二、R语言爬取动态网页的实例

我们要爬取的是腾讯公益网站的网页。我们爬取的是项目状态为已经结束的项目的信息。

腾讯公益网页

相应的代码如下:

【因为B博不能插代码块,所以我就插图片啦】

说明一下由于是第一版写的程序,所以后面发现了一个问题,就是虽然腾讯公益的已经结束的项目显示有1448页,但是实际上当你进入第100页以后,所有的内容就都和第100页相同了,由于我只是来学习动态网页的爬取方法所以在成功之后就没有对代码进行修改~~~~~~

因此以下代码只能爬取1-100页的基本信息。

爬取腾讯公益网页的代码

爬去完成后的数据存在outdata数据框中:

结果示例

结果示例(对其中的执行方数据进行了相应的模糊处理)

以上就是本期教程的所有内容啦,希望对大家有所帮助!


3. 参考的相关教程:

[1] R语言爬取动态网页:使用RSelenium包和Rwebdriver包的前期准备  https://blog.csdn.net/weixin_40628687/article/details/78971934

[2] R语言数据收集实例(一)——动态网页爬取 https://zhuanlan.zhihu.com/p/28108329

[3] https://jingyan.baidu.com/article/f96699bb8b38e0894e3c1bef.html

[4] https://www.cnblogs.com/mxly/p/10156517.html

[5] GeckoDriver的安装和使用 https://www.cnblogs.com/xuyingzhong/p/9345487.html

如果对你有帮助记得点个赞哦,亲!!!!!!!

R语言:VOL1-爬取动态网页的方法的评论 (共 条)

分享到微博请遵守国家法律