从零开始学习RSelenium爬取网页

R语言:RSelenium包爬取动态网页 目前很多网站的数据采用异步加载的方式呈现,以进口商品统计月报为例,当我们点击下一页时,表格中的数据会更新,但是网站的URL不会发生变化。对于这种网站,如果使用rvest包或RCurl包进行爬取,只能抓到第一页的数据。不过不用担心,对付这种情况,可以使用R语言中RSelenium包。   RSelenium包可以通过调用Selenium Server来模拟浏览器环境,它可以模拟浏览器的点击、滚 阅读详情

一、前言

在爬取房天下小区信息时,发现通过read_html直接打开网址会出现验证码,而通过网页菜单进入则可以正常打开。

为了解决这个问题,想到了用Rselenium来实现。

二、背景

       使用Rvest包抓取静态网页非常方便,但如果如果碰上动态网页,Rvest包则无法满足需求,例如:

1.    要抓取的内容非静态网页,而是js、jquery等查询结果;

2.    网站控制了页面的入口,只能从网站内进入,直接通过网址进入则会出现验证码、需登录等提示从而导致无法抓取页面内容;

3.    需要翻页的时候。(部分翻页也可以通过Rvest包实现)

三、准备

1.    Java开发环境下载及安装。Selenium Server是一个JAVA程序,需要JAVA的开发环境。

下载地址:https://www.oracle.com/java/technologies/javase-jdk14-downloads.html。

建议安装到默认路径,然后配置环境变量,

方法见:https://jingyan.baidu.com/article/48206aea070004606bd6b31d.html。

2.    Selenium Server下载。(不需安装)

下载地址:http://selenium-release.storage.googleapis.com/index.html 。

选择最新版本,本文使用的是 selenium-server-standalone-3.9.1.jar 。

3.    Chrome浏览器下载及安装。

下载地址:https://www.google.cn/chrome/ 。

4.    ChromeDriver下载。

下载地址:http://npm.taobao.org/mirrors/chromedriver/2.33/ 。

解压后将ChromeDriver.exe(最新版本)放在Chrome的安装路径下,和chrome.exe放在同一个目录下面。

5.    环境变量配置

将chrome.exe所在文件路径(如 C:\Program Files (x86)\Google\Chrome\Application) 添加进环境变量中。

环境变量配置方法见:https://jingyan.baidu.com/article/db55b6099d1e0d4ba30a2fc0.html。

四、使用selenium及rvest抓取数据

本文以抓取房天下小区信息为例。

【重要提醒:本文仅用于单页面技术讲解,切勿大批量抓取或用于商业用途,由此带来的法律风险个人自负】

 

第一步:启动selenium server

1.    在刚才下载的seleniumn server文件(selenium-server-standalone-3.9.1.jar)所在的文件夹,

Shift+鼠标右键,选择“在此处打开命令窗口”。

2.    在命令窗口中输入java -jar selenium-server-standalone-3.9.1.jar

注意jar包文件名使用自己真实下载的版本。

3.    最小化命令窗口(切勿关闭)。

第二步:在R中引用Rselenium包和Rvest包

install.packages("RSelenium")

library(RSelenium) #这个包用于操作网页,以便于获取js、jquery等数据

install.packages("rvest")

library(rvest)

 

第三步:连接selenium server、打开浏览器、访问网址、爬取数据

explorer <- RSelenium::remoteDriver(remoteServerAddr = "127.0.0.1" #本地

                      , port = 4444

                      , browserName = "chrome")#连接Server

explorer$open() #打开浏览器

explorer$navigate("https://cd.esf.fang.com/") #打开网页

#因为网站控制不能直接打开找小区的页面,所以在上面打开二手房页面后再打开找小区页面即可,不用模拟点击页面

explorer$navigate("https://cd.esf.fang.com/housing/") #打开网页

 

#获取到对应元素

webElem <- explorer$findElement(using = "class", "houseList")

web<-read_html(webElem$getElementAttribute("outerHTML")[[1]]) #读取打开的网页

nodes<-html_nodes(web,".plotTit") #读取小区名称及链接

xiaoqu_name<-html_text(nodes) #获取小区名称

xiaoqu_url<-html_attr(nodes,"href") #获取小区链接

nodes<-html_nodes(web,".priceAverage") #读取均价

price<-html_text(nodes) #获取均价

price2<-trimws(price,which=c("both","left","right"),whitespace = "[\t\r\n]") #去除均价内容汇总的空格

 

xiaoqu_list<-data.frame(xiaoqu_name,xiaoqu_url,price2) #构建成数据帧,也就是一张表

setwd("E:/房天下数据爬取") #设置工作目录

write.csv(xiaoqu_list,"xiaoqu_list.csv") #导出爬取到的数据

 

这样就成功利用RSelenium+rvest爬取到了房天下网站的小区信息。

更多教程在个人网站:www.idata8.com

R语言RSelenium包爬取动态网页数据前期准备(环境配置)-连载NO.01 生而为人,学无止境。 作为爬虫爱好者,最开始的时候多少都会遇到爬取的时候返回各种bug,抓头挠耳吧; R语言爬虫的包基础的就是rvest和RCurl,解析的就是xml包,当然你还得有html、css、http协议; 但基本的包仅对于静态网页的爬取比较有效,而对于动态网页(渲染网页)就没用了; 接下来写一下R语言里面对于动态网页爬取(AJAX异步渲染/加载网页)的前期环境配置/搭建(模... 阅读详情

相关推荐

R语言爬虫实例 初学者自用

本文记录了使用rvest & RSelenium 包进行爬虫与网页渲染的相关知识点及本人的编程操作过程。涉及到基本爬取操作、爬取缺失部分如何处理、操作网页过滤等步骤。

Evelyyyyyyyyyn_的博客 5338

RSelenium基本用法总结

有些数据在script标签里面的js动态脚本中,普通请求器如RCurl和httr没有权限办到(少了中介浏览器引擎来渲染这些HTML源文档。因此请求到的HTML文档是静态的,不包括HTML文档中那些重要的嵌套在script标签中的数据) RSelenium和Rwebdriver都是通过调用Selenium Sever来模拟浏览器环境,Selenium是一个用于网页测试的Java开源软件,可以模拟浏...

默默耕耘,阶段爆发,取长补短,修炼身心 4686

R爬虫RSelenium环境搭建及简单应用

这是鄙人自己实践的一种可行的环境搭建,我会尽量详细的写下大家步骤。

weixin_44349986的博客 2013

R语言爬虫如何抓取JavaScript动态渲染的网页数据

现代网页普遍依赖JavaScript动态加载内容,而传统HTML解析工具如rvest仅获取原始HTML,无法执行JS或等待DOM渲染完成,导致关键数据缺失。其根本原理在于服务端返回的初始HTML与浏览器最终渲染的DOM存在本质差异。这一技术瓶颈凸显了‘静态解析’与‘动态渲染’之间的鸿沟,其核心价值在于打通R生态与现代Web交互逻辑,支撑真实场景下的数据采集需求。典型应用场景包括爬取单页应用(SPA)的统计面板、下拉加载列表、实时股价、AJAX填充表格等。本文以TechStars官网为例,详解如何通过无头浏览

weixin_30411819的博客 320

R语言爬取动态网页:使用RSelenium包和Rwebdriver包的前期准备

  在使用rvest包抓取新浪财经A股交易数据中我们介绍了rvest包的用法,然而rvest包只能抓取静态网页,而对诸如ajax异步加载的动态网页结构无能为力。在R语言中,爬取这类网页可以使用RSelenium包和Rwebdriver包。   RSelenium包和Rwebdriver包都是通过调用Selenium Server来模拟浏览器环境。其中,Selenium是一个用于网页测试的Java...

偷闲阁 1万+

1篇2章9节:在R中应用SQL语言(更新20241217)

通过将SQL与R语言结合使用,数据分析人员可以充分发挥两者的优势,实现高效的数据管理与分析。SQL 提供了强大的数据查询和操作功能,特别适合处理结构化数据,而 R 作为统计分析和数据可视化工具,为进一步的数据处理和结果展示提供了有力支持

MD Code 1389

R语言网页抓取入门:为什么rvest是tidyverse用户的最佳选择

网页抓取(Web Scraping)是数据获取的基础技术,其核心在于从HTML文档中精准定位并提取结构化信息。原理上依赖HTTP请求、HTML解析、CSS/XPath节点选择与内容抽取四步闭环。rvest作为R语言原生工具,深度集成tidyverse生态,以声明式语法(如read_html() %>% html_nodes() %>% html_text())替代底层XML操作,显著降低统计分析师、学术研究者等R用户的心智负担。其技术价值体现在轻量、稳定、易调试,特别适合处理政府公开页面、学术目录、静态商品

weixin_30572613的博客 394

selenium-server-standalone-3.9.1.jar

selenium-server-standalone-3.9.1.jar,python插件,用于web自动化测试

利用代理池和多线程爬取房天下上万条数据

有了代理池之后就可以爬很多网站了,很多网站的反爬措施都是从ip方面下手,通过代理池可以近乎拥有无穷的ip,再也不怕封ip啦 下面我找上了房天下这个网站练一下手,通过测试,这个网站的反爬措施是一旦你访问过于频繁,他就会给你一个验证码,通过了验证码才能继续浏览。由于本人水平有限,可以说破解不了任何的验证码,所以希望通过更换ip来达到目的。 首先,先来了解一下这个网站,我准备爬取二手房的数据 这个是筛选...

DDB 1312

selenium-server-standalone-3.9.1.rar

selenium grid分布式3.9.1高版本

OTP语音芯片SOP8的前世今生_如九齐_硕呈_钰绅等以及国产方案KT148A

语音芯片ic的其中一个品类,就是SOP8封装的OTP语音芯片,非常的经典和常用。源头的供应商基本都是台系的原厂,比如:九齐、硕呈、佑华等等,其中佑华就算是鼻祖了,早期的4位机也是在语音市场得到了升华。 OTP(One Time Programmable)是单片机的一种存储器类型,意思是一次性可编程:程序烧入单片机后,将不可再次更改和清除。

qyvhome的博客 1873

selenium获取cookie并添加、requests处理cookie

import datetime from pymysql import * from bs4 import BeautifulSoup import requests import json import zlib from urllib import request import sys import random from selenium import webdriver import r...

李孟笛的博客 1335

告别Godot默认编辑器:手把手教你用VSCode配置C#开发环境(附中文注释避坑指南)

本文详细介绍了如何将VSCode配置为Godot引擎的C#开发环境,提升游戏开发效率。从环境准备、扩展配置到解决中文编码问题,提供完整的避坑指南和高级调试技巧,帮助开发者充分利用VSCode的智能补全和调试功能,打造高效工作流。

weixin_30596023的博客 189

RSelenium学习笔记(一)

一、介绍RSeleium的目标是让R更容易的连接Selenium Server。 RSelenium绑定了R与Selenium Webdriver API。详细介绍见 官方原文二、如何连接Selenium Server下载并配置Selenium和WebDrivers在Windows的command line中,定位到Selenium jar包所在文件夹,输入命令: java -jar seleni...

hawkingliu的博客 3411

从零开始:PLUMED与GROMACS整合安装全攻略

本文详细介绍了如何从零开始整合安装PLUMED与GROMACS,包括系统环境检查、MPI配置、PLUMED编译安装、GROMACS补丁应用及常见问题解决方案。通过本教程,研究人员可以快速完成分子动力学模拟工具的整合安装,实现增强采样和自由能计算功能。

weixin_42520796的博客 292

ESP32接入扣子(Coze) API使用自定义智能体

本示例将使用ESP32开发板通过WiFi接入 **Coze API**,实现一个简单的聊天机器人功能。用户可以通过串口向机器人输入问题,ESP32将通过Coze API与智能体进行通信,并返回对应的回复。本文将详细介绍了如何通过HTTP请求和JSON解析来与API进行交互,并给出完整的代码示例。

宁子希的博客 1万+

selenium分布式部署

一、下载jar包:selenium-server-standalone-3.9.1.jar,放到和chromedriver同级目录 二、cmd切换到selenium-server-standalone包所在目录,执行java-jarselenium-server-standalone-3.9.1.jar-rolehub,开启hub集线器,hub可以理解为一个中转点,管理各个节点的注册和状...

weixin_30500289的博客 520

Motoman机器人离线编程——Motocom32开发简介

欢迎关注Jungle的Motoman机器人离线编程专栏系列文章: Motoman机器人离线编程——Motocom32开发简介 Motoman机器人离线编程——Visio Studio环境配置 Motoman机器人离线编程——Motocom32库函数的使用与封装 Motoman机器人离线编程——Motocom32参考文献及注意事项 Motoman机器人离线编程——MotocomES介绍 ...

冯Jungle的个人博客 8713

01-selenium环境安装

1. 下载selenium selenium jar包 :https://npm.taobao.org/mirrors/selenium 点击下载对应版本的jar 包:我下载的是 selenium-server-standalone-3.9.1 2.打开IntelliJ IDEA,导入.jar包 点击菜单栏File-->Project Structure(快捷键Ctrl + Alt + Shift + s) 点击Project Structure界面左侧的Modules 在D...

小白的博客 710

环境配置与基础教程:2026大厂标准:使用 DVC (Data Version Control) 实现 YOLO 数据集版本控制全链路管理

本文介绍了使用DVC 3.0对YOLO数据集进行全链路版本控制的方法。主要内容包括: DVC 3.0的核心增强:内容块级缓存去重、并行云传输、AI智能体元数据跟踪等新特性,可显著提升YOLO数据集管理效率。 环境配置:详细说明DVC 3.0的安装步骤、项目初始化方法以及远程存储配置方案(支持S3、GCS、Azure等多种存储后端)。 目录结构规范:提供符合大厂MLOps标准的项目目录结构设计。 实战操作: 原始数据版本化 多格式标注数据版本控制 版本切换方法 优势说明:DVC通过哈希指针机制管理大型数据集,

ZXSXJ的博客 148

流体仿真软件:COMSOL Multiphysics二次开发_(3).流体仿真基础理论

流体仿真基础理论包括流体的基本性质、流体运动方程、边界条件、初始条件、湍流模型和网格生成等。在使用COMSOL Multiphysics进行流体仿真时,正确设置这些参数和条件是获得准确仿真结果的关键。通过实际应用案例,可以更好地理解如何在COMSOL中进行流体仿真,并提取和分析仿真结果。希望本文对流体仿真初学者和从业人员有所帮助。

kkchenjj的博客 1341

Selenium分布式自动化测试平台 Standalone Server 搭建

一、预置条件 0.Finalshell或者xshell远程连接及操作Linux系统的优秀工具,本人推荐Finalshell 链接:https://pan.baidu.com/s/1V8WEfCQsb24rnoeLMtfCMA 提取码:on5o 1.在linux服务器上,需要java环境、python3环境(具体安装,自行访问度娘) 二、Selenium Grid环境安装 (备注:由于公司采用Linux系统作为服务器,所以这里以Linux作为sample,windows环境安装逻辑基本一致) ..

白骨梦儿 2234

机器视觉应用工程师职位深度解析与面试指南

广东奥普特科技招聘机器视觉应用工程师,要求大专以上理工科专业背景,熟悉C/C++或PLC编程,具备自动化设备调试经验。岗位职责包括视觉项目方案评估、系统安装调试、售后技术支持及异常处理,需接受外派出差。该职位面向专业对口的应届生或实习生,强调动手能力、沟通技巧和吃苦耐劳精神。机器视觉工程师需掌握图像处理算法、硬件配置等核心技术,在工业自动化领域具有良好发展前景。求职者应注重编程能力和实践经验的积累,以胜任这一技术密集型岗位。

郑伟强dev的专栏 431

Rselenium包定时自动爬取网页的方法

当需要持续更新通过爬虫获取的数据时,我们通常可以设置定时任务自动爬取,而不用每次人工运行爬虫程序。 通过R语言中的Rselenium包爬取数据需要先启动服务器,所以定时爬取就不只是运行一个R语言脚本程序即可。 要设置R语言Rselenium包定时自动爬取网页有两个方法: 方法1.先设置定时任务启动服务器(selenium-server-standalone-4.0.0-alpha-2.jar),再设置另一个定时任务运行R语言脚本程序。 ...

Colinxie___的博客 859

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Selenium使用指南(超详细)

selenium是网页应用中最流行的自动化测试工具,可以用来做自动化测试或者浏览器爬虫等。免费开源轻量级,不同语言只需要一个体积很小的依赖包支持多种系统,包括Windows,Mac,Linux支持多种浏览器,包括Chrome,FireFox,IE,safari,opera等支持多语言,包括Java,C,python,c#等主流语言支持分布式测试用例执行。

huace3740的博客 6128

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Selenium自动化测试工具的介绍与使用

什么是自动化测试 自动化测试指软件测试的自动化,在预设状态下运行应用程序或者系统,预设条件包括正常和异常,最后评估运行 结果。总的概括即:将人为驱动的测试行为转化为机器执行的过程。 进入今天的主角:selenium学习功能测试自动化首选工具就是selenium,它是一个web自动化测试工具。 selenium的特点 支持多平台:IE、Chrome、Firefox、edge、Safari 支持多语言:Python、C、Java、C#、ruby、js 免费小巧,支持分布式测试用例的执行,..

TANGY的博客 3万+

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

上一篇: R语言安装、加载RSelenium时报错的解决方法
下一篇: Rselenium包定时自动爬取网页的方法
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值