抓取动态网页(R语言爬取动态网页增加我自己爬取的爬取实例!)
优采云 发布时间: 2021-12-08 16:23抓取动态网页(R语言爬取动态网页增加我自己爬取的爬取实例!)
其实我早就想给B站写个专栏了,草稿箱里还有几篇写了一半的读书报告,没想到我写的第一篇专栏是关于编程的2333333。
也是偶然有朋友问我能不能帮忙爬取数据,但是我没有爬取动态网页的数据,所以按照网上的教程整理了一下,然后加上了自己爬取的例子.
一、R语言爬取动态网页的前期准备
R语言爬取动态网页所需的包可以使用“RSelenium”或“Rwebdriver”,两者都可以通过调用Selenium Server模拟浏览器环境进行操作。
Selenium 是一个用于网页测试的Java 开源软件,它可以模拟浏览器的点击、滚动、滑动和文本输入操作[1]。
因为RSelenium可以直接在CRAN上下载安装(Rwebdriver包需要从gethub下载安装,比较麻烦),所以我使用RSelenium包进行动态网页爬取。
install.packages("RSelenium") #安装RSelenium包
library(RSelenium) #加载RSelenium包
但是加载完RSelenium包后不能直接使用,需要添加相应的辅助条件:
1.1 JAVA安装及环境配置
目前网上大部分教程都推荐安装JDK(Java Development Kit),但其实安装JRE(Java Runtime Environment)就足够了。因为我自己的电脑上有现成的。
JAVA的安装可以到其官方网站下载:
下载完成后,按照默认安装一步一步来!!!!
环境变量配置:
网上很多教程教你如何配置环境变量,但是我在window10上下载安装JAVA后,实际测试不需要配置环境变量。
可以在命令提示符下打开运行窗口【win+R,输入cmd,点击确定】界面,输入以下命令:
如果上述命令有正常响应,而不是提示命令不存在或报错,则说明安装JAVA,无需配置以下环境变量。如果还是不行,请按照以下要求配置环境变量:
配置环境变量JAVA_HOME,【就是你安装JAVA的地址】
配置环境变量JAVA_HOME
配置环境变量PATH,【一般电脑上已经有PATH的环境变量了,加进去就行了】
其实就是连接到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首页截图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 Server is up and running on port XXXX 表示运行成功。
默认端口为 4444。
如果出现错误,可能是你的4444端口处于占用状态
运行以下程序时请保持selenium运行【即不要关闭此窗口】,否则以下R程序将无法正常运行
1.3 安装浏览器和驱动组件
我在这里推荐 Firefox,但也可以使用 Chrome。[RSelenium 支持 5 种浏览器:chrome、firefox、htmlunit、internetexplorer、iphone]。主要原因是Chrome在中国不容易安装。无法登录其官网下载Chrome浏览器。【但是我在企鹅电脑管家的软件管理中发现了Chrome浏览器的安装。我没试过,各位。看看能不能试试~】
安装火狐浏览器后,需要安装 GeckoDriver 来驱动火狐浏览器。
下载地址为:
然后请将下载的文件安装在火狐浏览器的安装路径下
Firefox 的默认安装路径为:C:\Program Files\Mozilla Firefox
环境变量的配置是下图中倒数第二个变量
配置PATH环境变量
如果以上所有操作都完成了,我们就可以愉快的运行和编写R语言程序了。
二、R语言爬取动态网页的例子
我们要抓取的是腾讯公益网站的网页。我们抓取的是项目状态结束的项目信息。
腾讯公益专页
对应的代码如下:
【因为B博客不能插入代码块,所以我来插入图片】
说明因为是第一版写的程序,后来发现一个问题,就是腾讯公益的完成项目虽然显示有1448页,但实际上进入第100页时,所有的内容都是与第 100 页相同。页面都是一样的,因为我只是来学习动态网页的爬取方法,所以成功后没有修改代码~~~~~~
因此,下面的代码只能抓取1-100页的基本信息。
抓取腾讯公益网页的代码
爬取完成后的数据存放在outdata数据框中:
示例结果
结果示例(executor的数据也做了相应的混淆处理)