作者 | 马超
来源|CSDN博客
马上就要到报名幼儿园考试的季节了。 我身边很多同学都议论过高价请枪手帮自己报考。 虽然幼儿园申请本质上是一个比较简单的任务,不过就是网络爬虫加人工答题而已。 需要。
今年博主在给孩子报考幼儿园时使用了Selenium+Python的方法,效果不错。 在去年研究R语言的过程中易语言抢购软件教程,我发现这种看似最简单的R语言也能做到相应的秒杀。 我整理了相关的编程思路,供大家参考。 我尽量把所有细节解释清楚,对读者没有任何相应的基本要求。
首先,我们的首要原则是保证相应操作的安全。 纯程序模拟交互的方式一旦被应用网站的保护机制暴露,后果不堪设想。 所以先排除它们。
于是我想到了脚本语言+可编程浏览器的方法。 我们知道Selenium是一个手动网页测试框架。 它支持用于 Python、Java 和 R 语言等可编程操作的套接字。 同时Selenium也可以由用户手动操作,无需程序控制,使用灵活。 并且应用网站接收到的所有信息也是通过浏览器发送的,不存在触发保护和反爬虫机制的风险。 考虑到R语言的门槛最低,这里使用R语言作为编程平台,以方便更多的爬虫初学者。
因为博主了解到很多应用网站只支持Windows平台浏览器,所以这里以Win平台为例,从头开始。
安装R语言编程环境
1、打开网页https://mirrors.tuna.tsinghua.edu.cn/CRAN/,点击DownloadRforWindows,再点击installRforthefirsttime,再点击DownloadR3.5.2forWindows,下载R语言安装包。
2. 要安装R语言,请双击下载的文件R-3.5.2-win.exe。 最好执行完全默认安装。 如果C盘空间太小,也可以更改安装路径。
安装Java环境
1、下载java安装包,打开网页oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html,注意前面点击AcceptLicenseAgreement,接受合同,然后选择Windows64版本。
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、打开网页https://mirrors.tuna.tsinghua.edu.cn/CRAN/,点击DownloadRforWindows,点击Rtools,然后选择推荐版本Rtools35.exe(推荐)进行下载。
2、双击Rtools35.exe,选择组件时注意选择所有组件。
安装硒
1、安装chrome,进入.com/这个官网就可以访问,点击freedownload即可安装。
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
看到返回字样“SeleniumServerisupandrunningonport4444”就说明安装成功了。
注意:请记得在启动R语言环境之前执行此步骤,以确保selenium启动。
调试 Selenium 浏览器框架
1、启动R语言编程软件易语言抢购软件教程,点击开始-所有程序-R-Rx643.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='http://yey.bapuec.org/start'
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"]',涉及到一定的爬虫知识。 这句话是找到“height”文本框对应的html的xpath,然后nextEle=remDr $findElement(using="xpath", value=xpath),这句话是选择“height”文本框元素。
这句话定义了我的答案文本
手动填写您的答案 nextEle$sendKeysToElement(text)
杂项注释:
以上是本手册申请系统的概览版本。 有一定基础的程序员跟着本教程可能不会超过半小时,零基础的同学可能需要半天。
事实上,这个版本还没有实现的内容:比如手动填写身份证号码和生日日期,以及改变问题形式的自适应功能等都没有实现。 总体思路和基本构建流程已经基本说明。 有时间我会和大家分享进阶章节。
原来的:
【结尾】