动态网页抓取(R语言爬取动态网页增加我自己爬取的爬取实例!)
优采云 发布时间: 2022-02-13 23:11动态网页抓取(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数据框中:
结果示例
结果示例(其中的执行程序数据被相应地混淆)