专栏名称: 生信杂谈
生物信息学;生物信息;计算机辅助药物设计;测序分析;Python;R;机器学习;论文写作;网站制作;LOL;dota2。
目录
相关文章推荐
程序员小灰  ·  疯了!下载 DeepSeek 最高判20年! ·  2 天前  
程序员的那些事  ·  热搜第一!DeepSeek百万年薪招AI人才 ... ·  昨天  
鸿洋  ·  关于 2025 副业探索,DeepSeek ... ·  2 天前  
OSC开源社区  ·  DeepSeek R1已在Gitee ... ·  5 天前  
51好读  ›  专栏  ›  生信杂谈

爬虫!还是爬虫!给劳资爬!!

生信杂谈  · 公众号  ·  · 2018-04-21 22:14

正文

有些浏览器的数据并不好爬,比如需要登录后才能访问指定网页,或者先检测浏览器是否支持JS或者需要预先加载JS脚本才能浏览。对于这类网站,我们得请出神器 selenium !selenium可以模拟真实浏览器,自动化测试工具,支持多种浏览器,爬虫中主要用来解决JavaScript渲染问题。一起来看看selenium在R中的应用。

点击查看之前爬数据库的文章:

使用R语言爬取Pubchem药物信息

使用R语言爬取DailyMed药物信息

R语言批量爬取NCBI基因注释数据


还是以上期的 pubchem 数据库为例,如果直接使用 Rcurl rvest XML 来爬的话,你会发现你爬下来的完全不是想要的,比如药物 9 - Cis - Retinoic 20Acid ,其在pubchem中的页面如下: 我们使用常规方法爬取,根据页面链接获得此页面的所有内容并保存到 test . html

  1. library(XML)

  2. library(RCurl)

  3. doc getURL("https://pubchem.ncbi.nlm.nih.gov/compound/9-Cis-Retinoic%20Acid")

  4. writeLines(doc,"./test.html")

打开上面爬取的页面 test . html ,结果是这样的: 也就是说在爬取此页面时, pubchem 服务器先检测你的浏览器是否能执行JS,如果不行的话,你就给劳资爬开吧。   但我们不能爬开,我们还是要爬!

操作如下:

首先是 Selenium Server 及相关依赖的安装:

  1. 安装Java运行环境,因为用到的 Rseienium 是个 jar 包,下载链接如下: http://www.oracle.com/technetwork/java/javase/downloads/index.html,安装JDK后记得修改环境变量,不会百度之。

  2. 下载 selenium - server - standalone - 3.9 . 0.jar 文件,下载链接如下: http://selenium-release.storage.googleapis.com/index.html。

  3. 下载Google浏览器,并默认路径安装。

  4. 下载 ChromeDriver 用来驱动Google浏览器,其版本映射表如下:

  5. ChromeDriver . exe 放置在 chrome . exe 同一目录下,如果默认安装Google浏览器的话,目录应该是: C : \Program Files ( x86 ) \Google\Chrome\Application

  6. 将上面的路劲添加到环境变量,操作如下: 我的电脑(计算机) >> 右键属性 >> 左边高级系统设置 >> 右下角环境变量 >> 系统变量Path >> 添加路径即可:

  7. selenium - server - standalone - 3.9 . 0.jar 文件所在的位置,通过shift+鼠标右键选择“在此处打开命令行”。在命令行中运行如下命令启动Selenium Server。

  1. java -jar selenium-server-standalone -3.9.0.jar

一通操作猛如虎,但我们只完成了准备工作...下面才步入正题,打开R:

  1. rm(list=ls())

  2. library(data.table)

  3. library(openxlsx)

  4. library(stringr)

  5. library(rvest)        # 为了read_html函数

  6. library(RSelenium)    # 为了使用JavaScript进行网页抓取

  1. 设置服务器连接:

  2. remDr remoteDriver(remoteServerAddr = "127.0.0.1"

  3.                      , port = 4444

  4.                      , browserName = "chrome")#连接Server

打开浏览器

  1. remDr$open()

定义提取函数:

  1. webElement_getfunction(xpath){

  2.  error_flagtry({

  3.    webElem_web







请到「今天看啥」查看全文