在R里面配置selenium爬虫环境

普通的爬虫,其实什么编程语言都差不多,因为都是网页的html源代码字符串的解析而已,但是很多网页是具有防止爬虫的功能,就是无法直接获取html源代码字符串,需要通过JavaScript来互动。比如:
  • https://shuju.wdzj.com/
动态网页
无论用户点击网页的什么内容,该网页的url都不变化,全部的内容都是数据库实时更新出来。所以我们的代码也需要跟这个网页进行交互,模拟JavaScript进程。
老实说,python写爬虫,真的是很爽,太多系统性的工具了:
  • re库(正则提取)
  • requests库(网页数据抓取)
  • 谷歌浏览器(对网页进行分析)
  • BeautifulSoup库(网页标签和内容提取)
  • selenium库+PhantomJS(获得渲染后的页面)
但是,我没有时间去系统性学习python了,而且python爬虫本来就是另外一个大的学习方向。不过我注意到,selenium库可能是有R的对应版本。
首先下载Selenium Server (Grid)
Selenium是一个用于测试网页应用的开源软件。(通过代码操作浏览器,模拟人类鼠标和键盘浏览浏览器操作)
  • 它提供了浏览器中的点击,滚动,滑动,及文字输入等驱动程序。这样,利用Selenium即可以通过脚本程序来替代人工进行测试一个开发软件的各种功能。在处理爬虫任务中,经常遇到需要输入文字,进行下拉菜单选择,以及鼠标点击等情景。
  • Selenium Server允许你在不同的浏览器上打开网址,对网页进行操作,并爬取网页元素的独立JAVA程序。在处理爬虫任务中,经常遇到需要输入文字,进行下拉菜单选择,以及鼠标点击等情景。通过Selenium Server我们可以对网页进行操作,然后爬取操作后的数据,从而进行爬取动态页面。
官网:https://www.selenium.dev/downloads/
是一个java程序,最新版(2020-05-21 )下载链接如下:
  • https://selenium-release.storage.googleapis.com/3.141/selenium-server-standalone-3.141.59.jar
不管你的电脑是Windows还是macOS,理论上都是需要自己搞定java运行环境的哈。
然后配置chrome + chromeDriver
谷歌浏览器下载安装很简单,不管你的电脑是Windows还是macOS都是正常的软件安装步骤而已。
打开谷歌浏览器,输入:chrome://version/ 就可以看到你的谷歌浏览器安装文件夹路径,然后下载chromeDriver文件拷贝到谷歌浏览器安装文件夹路径,如下:
cd /Applications/Google\ Chrome.app/Contents/MacOS/
(base) jmzengdeMacBook-Pro:MacOS jmzeng$ ls -lh 
-rwxrwxr-x  1 jmzeng  admin   207K May  2 06:39 Google Chrome
-rwxr-xr-x@ 1 jmzeng  admin 10M May 21 09:19 chromedriver
这两个文件非常重要,如果是苹果电脑,有一个权限设置也很重要:
xattr -d com.apple.quarantine chromedriver
就在chromeDriver文件所在目录运行哦!
chromeDriver文件的下载链接是:
  • https://chromedriver.storage.googleapis.com/index.html?path=2.29/
接着开启Selenium Server (Grid)
前面下载了 selenium-server-standalone-3.141.59.jar,是java文件,所以调用你电脑配置好的java环境即可使用它啦,下面的命令
java -jar selenium-server-standalone-3.141.59.jar
日志如下:
09:27:52.106 INFO [GridLauncherV3.parse] - Selenium server version: 3.141.59, revision: e82be7d358
09:27:52.174 INFO [GridLauncherV3.lambda$buildLaunchers$3] - Launching a standalone Selenium Server onport 4444
2020-05-21 09:27:52.205:INFO::main: Logging initialized @274ms to org.seleniumhq.jetty9.util.log.StdErrLog
09:27:52.350 INFO [WebDriverServlet.<init>] - Initialising WebDriverServlet
09:27:52.416 INFO [SeleniumServer.boot] - Selenium Server is up and running on port 4444
最后写R爬虫
代码很简单,如下:
library(RSelenium)
library(rvest)
library(stringr)

################调用R包#########################################
library(rvest)  # 为了read_html函数
library(RSelenium) # 为了使用JavaScript进行网页抓取

###############连接Server并打开浏览器############################
remDr <- remoteDriver(remoteServerAddr = "127.0.0.1" 
 , port = 4444
 , browserName = "chrome")#连接Server
remDr$open() #打开浏览器
remDr$navigate("https://shuju.wdzj.com/") #打开网页

当然了,RSelenium用法肯定不止一次啦。一大波学习链接:
  • https://ropensci.org/tutorials/rselenium_tutorial/
  • http://thatdatatho.com/2019/01/22/tutorial-web-scraping-rselenium/
需要区分静态网页和动态网页
静态网页:https://phantomjs.org/api/webpage/property/cookies.html
动态网页:https://shuju.wdzj.com/

文末友情宣传

强烈建议你推荐我们生信技能树给身边的博士后以及年轻生物学PI,帮助他们多一点数据认知,让科研更上一个台阶:
推荐阅读

(0)

相关推荐

  • 第68天:Selenium 环境配置

    如果你做过 Web 测试的工作,那么你应该明白 Web 测试中最重要的一部分工作就是自动化测试.自动化测试,顾名思义就是让浏览器自动运行,而无需手动操作.这和我们爬虫工作原理有些相似,我们爬虫也需要让 ...

  • 反制 Webdriver - 从 Bot 到 RCE 进发

    作者:LoRexxar'@知道创宇404实验室 时间:2021年4月16日 4月12号,@cursered[1]在starlabs上公开了一篇文章<You Talking To Me?>[ ...

  • Selenium3.0支持Chrome65

    好久没注意Chrome的版本更新,突然发现有新版本更新了,又想到经常有初学者问到怎么我以前的代码不支持Chrome浏览器了,所以就录了一个新的课程. 由于Selenium3.0对各个浏览器的驱动都是依 ...

  • selenium+python自动化100-linux搭建selenium环境

    前言 selenium在windows机器上运行,每次会启动界面,运行很不稳定.于是想到用chrome来了的headless无界面模式,确实方便了不少. 为了提高自动化运行的效率和稳定性,于是把sel ...

  • c#爬虫-解决ChromeDriver 版本问题

    dotNET跨平台 今天 问题 Selenium +c# 进行爬虫时报错 selenium.common.exceptions.SessionNotCreatedException: Message: ...

  • 反了!居然让我教她自动化测试!

    来源:Python 技术「ID: pythonall」 一个做测试的居然让我教她怎么做自动化测试,真是反了--行吧,正好懂一些 Selenium,今天就来跟大家一起了解下 Python 如何使用 Se ...

  • Anaconda环境下安装库

    使用anaconda环境下使用pycharm后,有些其他库也想安装,但开始在python.exe目录下安装没成功,因为pycharm用的环境已经不是原始的python.exe解释器了.就总结了一些安装 ...

  • 用VScode配置Python开发环境

    引用:https://www.jianshu.com/p/506debe61423 前言 VScode是一个相当优秀的IDE,具备开源.跨平台.模块化.插件丰富.启动时间快.颜值高.可高度定制等等优秀 ...

  • 笔记3:安装selenium ide环境

    笔记3:安装selenium ide环境

  • vscode 配置vue开发环境

    vscode 配置vue开发环境

  • (8条消息) IDEA配置flink开发环境及local集群代码测试

    背景: 最近公司需要引入flink相关框架做一些大数据报表分析的任务,之前没有实际接触过flink,所以需要学习一下.此外,防止看完就忘,也为了后续的回顾学习,因此在这里做一个整理,也希望帮助到有需要 ...

  • selenium爬虫操作网页(实战篇)

    前面我们遇到了一个爬虫难题:爬虫最怕遇到JavaScript依赖性的动态网页,选择了[在R里面配置selenium爬虫环境](),仅仅是安装和配置好了在R里面使用selenium爬虫,打开一个Java ...

  • Rstudio Server 不同R版本配置和切换

    版本兼容性问题一直是生信初学者最容易掉进去的大坑. Rstudio的香,用过的人都知道. Rstudio Desktop for Windows/Mac 切换不同R版本非常简单,Tools→Globa ...

  • 报表生成器配置FastReport.Net环境

    FastReport .Net是适用于Windows Forms,ASP.NET,MVC和.NET Core的全功能报表解决方案.它可以在Microsoft Visual Studio 2005-20 ...

  • Linux/Ubuntu中Vs Code配置C /C环境

    这篇博文演示在Ubuntu虚拟机中安装Vs Code并配置C++/C环境 第一步:安装并运行Vs Code 进入应用商店搜索visual studio code并点击install进行安装 安装后在终 ...

  • VS Code Java 11 月更新,来啦!配置 Java 运行环境更加方便!

    欢迎阅读11月的VS Code Java更新.在此更新中,我们很高兴的发布最新的向导功能用于帮助您配置Java运行环境.在9月,我们的博客澄清:1)Java 11作为JDK的最低版本仅针对运行VS C ...