龙空技术网

拿来就能用!用爬虫秒抢到孩子心仪的幼儿园 | CSDN 博文精选

CSDN 2923

前言:

当前小伙伴们对“vba与oracle”都比较关心,你们都需要剖析一些“vba与oracle”的相关文章。那么小编同时在网上收集了一些有关“vba与oracle””的相关资讯,希望小伙伴们能喜欢,朋友们快快来学习一下吧!

作者 | 马超

来源 | CSDN博客

又快到了幼儿园报名的季节了,身边很多朋友有很多都说起要高价请枪手帮助秒杀报名的,其实幼儿园报名本质上还是一个比较简单的任务,粗略来看这只是一个网页爬虫加自动答题的需求。

去年博主为孩子进行幼儿园报名时用了Selenium+Python的方式,效果不错。今年我在研究R语言的过程中,发现这个看似最简单的R语言也可以做相应的秒杀。我把相关编程的思路整理了一下,供各位参考。我尽量将全部的细节说清,对于读者也没有什么相应基础的要求。

首先我们的第一大原则是要保证相应操作的安全性,纯程序模拟交互的方式一旦被报名网站防护机制识破,后果将不堪设想。所以先将这种方式排除。

接下来我想到的是脚本化语言+可编程浏览器方式,我们知道Selenium是一个自动化的网页测试框架。支持Python、Java、R语言等可编程操作的接口,同时Selenium也完全可以脱离程序控制由用户手工操作,使用灵活。而且报名网站收到的全部信息也都是经由浏览器发出的,没有触发防护反爬机制的风险。考虑到R语言的门槛最低,所以这里以R语言为做为编程平台以例以便为更多爬虫初学者提供便利。

由于博主了解到很多报名网站都只支持Windows平台浏览器,所以这里就以Win平台为例,从零讲起。

安装R语言编程环境

1.打开网页,点击Download R for Windows,然后再点击install R for the first time,再点击Download R 3.5.2 for Windows下载R语言安装包。

2.安装R语言,双击下载的文件R-3.5.2-win.exe,最好进行全默认的安装,如果C盘空间太小也可以改变安装路径。

安装Java环境

1.下载java安装包打开网大页,注意在Accept License Agreement前点击一下,接受协议,然后选择Windows 64版本即可。

2.双击下载的文件jdk-8u201-windows-x64.exe,全程下一步安装即可。注意需要记录下来安装路径。

3.添加环境变更。单击“计算机-属性-高级系统设置”,单击“环境变量”。在“系统变量”栏下单击“新建”,创建新的系统环境变量。

新建->变量名"JAVA_HOME",变量值"C:\Java\jdk1.8.0_05"(即JDK的安装路径)

编辑->变量名"Path",在原变量值的最后面加上“;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin”

新建->变量名“CLASSPATH”,变量值“.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar”

4.验证Java是否安装成功:点击开始菜单在最下方的搜索程序和文件的文本框中输入cmd命令,进入命令行模式后,执行java -version能看到正确版本即可。

安装Rtools(可选)

由于Windows环境没有,到了进阶篇咱们就有可能需要用到Rtools,当然本篇还不涉及Rtools的内容,所以也可略去此步。

1.打开网页,点击Download R for Windows,点击Rtools,再选择推荐的版本Rtools35.exe (recommended),下载即可。

2.双击Rtools35.exe,注意在select component时一定要将全部的组件全部选上。

安装Selenium

1.安装chrome,进入这个官网的网址是可以访问的,直接点free download即可安装。

2.下载并安装Selenium插件:

(1)下载chromedriver_win32.exe和selenium-server-standalone-3.9.1.jar拷贝至C:\Program Files (x86)\Google\Chrome\Application即可。

(2)启动Selenium的Docker服务。

点击开始菜单在最下方的搜索程序和文件的文本框中输入cmd命令,进入命令行模式后执行:

cd C:\Program Files (x86)\Google\Chrome\Application

java -Dwebdriver.chrome.driver="chromedriver.exe" -jar selenium-server-standalone-3.9.1.jar

看到有“Selenium Server is up and running on port 4444”的返回字样即说明安装成功。

注意:启动R语言环境之前请一定记得执行此步骤,保证selenium是启动的。

调试Selenium浏览器框架

1.启动R语言编程软件,点击开始-所有程序-R-R x64 3.5.2即可启动R语言。

2.进行R语言编程界面后,安装Rselenium包,在R语言环境中执行

install.packages('RSelenium'

3.安装爬虫包rvest和httr,在R语言环境中执行

install.packages('rvest')install.packages('httr')

4.启动可编程浏览器

在R语言环境中执行:

library(RSelenium)

library(rvest)

remDr <- remoteDriver(

browserName = "chrome",

remoteServerAddr = "localhost",

port = 4444L

)

remDr$open

这时浏览器会自动打开并且左上角有“chrome正受到自动测试软件的控制”的字样如下图所示。

自动信息填写过程的简单样例

1.打开报名网站:咱们前文也提到了,所谓自动报名系统其实就是一个网页爬虫+自动回答的功能实现。以天津幼儿园的报名为例,报名网站平时并不开起,只能通过练习网页进行练习。不过利用练网站简单说一下秒杀流程也是可以的。

在你已经完成了之前的步骤,打开了“chrome正受到自动测试软件的控制”字样的浏览器以后,在R语言环境中运行以后代码。

url=''

remDr$navigate(url)

2.进行等待界面:这时浏览器上会显示一个等待界面如下图:

3.输入验证码:然后会让你输入验证码,如下图所示:

注:以笔者个人的经验看,填写验证码的步骤,强烈建议使用人工输入的方式进行,使用自动图像识别的验证插件往往欲速而不达。

4.进入正式报名界面

这时返回R语言编程界面运行如下代码:

xpath='//*[@id="Height_ID"]'

nextEle=remDr$findElement(using="xpath",value=xpath)

text <- list('98')

nextEle$sendKeysToElement(text)

xpath='//*[@id="Weight_ID"]'

nextEle=remDr$findElement(using="xpath",value=xpath)

text <- list('26')

nextEle$sendKeysToElement(text)

xpath='//*[@id="CSD_ID"]'

nextEle=remDr$findElement(using="xpath",value=xpath)

text <- list('天津市河大区')

nextEle$sendKeysToElement(text)

xpath='//*[@id="RM_ID"]'

nextEle=remDr$findElement(using="xpath",value=xpath)

text <- list('大晨晨')

nextEle$sendKeysToElement(text)

接下来你再返回浏览器就会发现神奇的一幕出现了,信息可以按照预先设置好的方式被填上云。

简单讲解一下这些代码的含义:

首先是xpath='//*[@id="Height_ID"]',这其中涉及一定的爬虫知识,这句是要找一下填写”身高“这个文本框对应的html的xpath,然后是nextEle=remDr$findElement(using="xpath",value=xpath),这句是把这个”身高“这个文本框元素选中。

这句定义我的答案text <- list('98')

将你的答案自动填上nextEle$sendKeysToElement(text)

后记:

以上是这个自动报名系统的概要说明版本,有一定基础的程序员GG估计按照这个教程做一遍最多不超过半小时,零基础的朋友估计最多也就是需要半天的时间。

当然这个版本还没有实现的内容:诸如身份证号以及生日日期等项目的自动填写,而且也没有实现针对提问方式变化而进行的自适应的功能等等。但是整体的思路和基本的搭建过程已经基本说明了。进阶篇我有时间后面也会分享给大家。

原文:

【END】

标签: #vba与oracle #textboxtohtml #oraclexpath