推荐设备MORE

H5动效制作指南—企业官网建设

H5动效制作指南—企业官网建设

疑难问题

在R里边配备selenium网络爬虫自然环境

日期:2021-02-04
我要分享
生信小白团 留言板留言参加探讨,或是关心同名的手机微信微信公众号biotrainee

一般的网络爬虫,实际上甚么程序编写語言都类似,由于全是网页页面的html源码标识符串的分析罢了,可是许多网页页面是具备避免网络爬虫的作用,便是没法立即获得html源码标识符串,必须根据JavaScript来互动交流。例如:


动态网页
不管客户点一下网页页面的甚么內容,该网页页面的url也不转变,所有的內容全是数据信息库即时升级出去。因此大家的编码也必须跟这一网页页面开展互动,仿真模拟JavaScript过程。
老实巴交说,python写网络爬虫,确实是太爽了,过多系统软件性的专用工具了: re库(正则表达式获取) requests库(网页页面数据信息爬取) Google访问器(对网页页面开展剖析) BeautifulSoup库(网页页面标识和內容获取) selenium库+PhantomJS(得到3D渲染后的网页页面)
可是,也没有時间去系统软件性学习培训python了,并且python网络爬虫原本便是此外一个大的学习培训方位。但是我留意到,selenium库将会是有R的相匹配版本号。

最先免费下载Selenium Server (Grid)

Selenium是一个用以检测网页页面运用的开源系统手机软件。(根据编码实际操作访问器,仿真模拟人们电脑鼠标和电脑键盘访问器实际操作) 它出示了访问器中的点一下,翻转,拖动,及文本键入等驱动器程序。那样,运用Selenium就可以以根据脚本制作程序来取代人力开展检测一个开发设计手机软件的各种各样作用。在解决网络爬虫每日任务中,常常碰到必须键入文本,开展往下拉莱单挑选,及其电脑鼠标点一下等场景。 Selenium Server容许你一直在不一样的访问器上开启网站地址,对网页页面开展实际操作,并抓取网页页面原素的单独JAVA程序。在解决网络爬虫每日任务中,常常碰到必须键入文本,开展往下拉莱单挑选,及其电脑鼠标点一下等场景。根据Selenium Server大家能够对网页页面开展实际操作,随后抓取实际操作后的数据信息,进而开展抓取动态性网页页面。
官方网站:downloads/
是一个java程序,全新版(2020-05-21 )免费下载连接以下: 3.141/selenium-server-standalone-3.141.59.jar
无论你的电脑上是Windows還是macOS,基础理论上面是必须自身拿下java运作自然环境的哈。

随后配备chrome + chromeDriver

Google访问器免费下载安裝非常简单,无论你的电脑上是Windows還是macOS全是一切正常的手机软件安裝流程罢了。
开启Google访问器,键入: chrome://version/ 便可以见到你的Google访问器安裝文档夹相对路径,随后免费下载chromeDriver文档复制到Google访问器安裝文档夹相对路径,以下:

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

这2个文档十分关键,假如是iPhone电脑上,有一个管理权限设定也太重要:

xattr -d com.apple.quarantine chromedriver

就在chromeDriver文档所属文件目录运作哦!
chromeDriver文档的免费下载连接是: ?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
:52.205:INFO::main: Logging initialized @.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("") #开启网页页面

自然了,RSelenium使用方法毫无疑问不仅一次啦。一大波学习培训连接: tutorials/rselenium_tutorial/ 2019/01/22/tutorial-web-scraping-rselenium/
必须区别静态数据网页页面和动态性网页页面

静态数据网页页面:api/webpage/
动态性网页页面: