拿来就能用!用爬虫秒抢到孩子心仪的幼儿园 | CSDN 博文精选
作者 | 马超来源 | CSDN博客又快到了幼儿园报名的季节了,身边很多朋友有很多都说起要高价请枪手帮助秒杀报名的,其实幼儿园报名本质上还是一个比较简单的任务,粗略来看这...
作者 | 马超
来源 | CSDN博客
又快到了幼儿园报名的季节了,身边很多朋友有很多都说起要高价请枪手帮助秒杀报名的,其实幼儿园报名本质上还是一个比较简单的任务,粗略来看这只是一个网页爬虫加自动答题的需求。
去年博主为孩子进行幼儿园报名时用了Selenium+Python的方式,效果不错。今年我在研究R语言的过程中,发现这个看似最简单的R语言也可以做相应的秒杀。我把相关编程的思路整理了一下,供各位参考。我尽量将全部的细节说清,对于读者也没有什么相应基础的要求。
首先我们的第一大原则是要保证相应操作的安全性,纯程序模拟交互的方式一旦被报名网站防护机制识破,后果将不堪设想。所以先将这种方式排除。
接下来我想到的是脚本化语言+可编程浏览器方式,我们知道Selenium是一个自动化的网页测试框架。支持Python、Java、R语言等可编程操作的接口,同时Selenium也完全可以脱离程序控制由用户手工操作,使用灵活。而且报名网站收到的全部信息也都是经由浏览器发出的,没有触发防护反爬机制的风险。考虑到R语言的门槛最低,所以这里以R语言为做为编程平台以例以便为更多爬虫初学者提供便利。
由于博主了解到很多报名网站都只支持Windows平台浏览器,所以这里就以Win平台为例,从零讲起。
1.打开网页https://mirrors.tuna.tsinghua.edu.cn/CRAN/,点击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安装包打开网大页https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html,注意在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.打开网页https://mirrors.tuna.tsinghua.edu.cn/CRAN/,点击Download R for Windows,点击Rtools,再选择推荐的版本Rtools35.exe (recommended),下载即可。
2.双击Rtools35.exe,注意在select component时一定要将全部的组件全部选上。
安装Selenium
1.安装chrome,进入https://chrome.en.softonic.com/这个官网的网址是可以访问的,直接点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')
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"]',这其中涉及一定的爬虫知识,这句是要找一下填写”身高“这个文本框对应的html的xpath,然后是nextEle=remDr$findElement(using="xpath",value=xpath),这句是把这个”身高“这个文本框元素选中。
这句定义我的答案text <- list('98')
将你的答案自动填上nextEle$sendKeysToElement(text)
后记:
以上是这个自动报名系统的概要说明版本,有一定基础的程序员GG估计按照这个教程做一遍最多不超过半小时,零基础的朋友估计最多也就是需要半天的时间。
当然这个版本还没有实现的内容:诸如身份证号以及生日日期等项目的自动填写,而且也没有实现针对提问方式变化而进行的自适应的功能等等。但是整体的思路和基本的搭建过程已经基本说明了。进阶篇我有时间后面也会分享给大家。
原文:
https://blog.csdn.net/BEYONDMA/article/details/87902276
【END】
热 文 推 荐
☞网易云音乐工程师,亲自揭晓消息队列改造之路! | 技术头条
90 后程序员薪资大揭秘:有人刚毕业年薪 200 万,有人月薪不足 1 万
学阿里中台,80%的人只学到了皮毛!揭秘阿里中台的12个架构思维和原则
☞ 真正适合小白的教程:Python有什么用?数据化运营怎么做?
![640?wx_fmt=png](https://i-blog.csdnimg.cn/blog_migrate/2cba20d74577dec51dc9daf89a6a59e5.png)
更多推荐
所有评论(0)