网站大部分都是jsp做的,网站推广方法ppt,网站开发行业发展前景,医疗网站模版今天来一个比较屌的自动化登陆工具#xff0c;selenium模块#xff0c;这个模块#xff0c;比较装逼啦~具体自行百度吧#xff01;这篇博客实现了什么功能呢~可以自动使用用户名和密码登录#xff0c;当然#xff0c;豆瓣对登录次数还有ip地址做了一些策略#xff0c;例… 今天来一个比较屌的自动化登陆工具selenium模块这个模块比较装逼啦~具体自行百度吧这篇博客实现了什么功能呢~可以自动使用用户名和密码登录当然豆瓣对登录次数还有ip地址做了一些策略例如当同一个ip地址过于频繁的登录这个时候就会生成一个随机的验证码有了验证码的话我们在用用户和密码登录就挂掉了肯定是提交不成功登陆不到豆瓣个人页面怎么办怎么办呢慌NMB呀~想办法搞定验证码就是咯~ok.废话不多说来看本次博文内容教你搞定豆瓣的验证码搞定验证码有两种方式一种是手动打码也就是通过抓取到登录页面中验证码的地址然后把图片下载到本地打开以后手动输入以后传递给浏览器验证码的地方(LOW B方法)虽然这种方法比较的LOW B,本次主要是为了教会大家利用selenium搞定豆瓣的登录so..whatever不要在乎low不 low了。另外一种办法就是通过在线的打码平台搞(高大上)百度上找自动打码有很多我用过云打码和超级鹰都不错~so...我是比较推荐用云打码的具体怎么用自行百度吧本次博客不过多介绍 说下本次代码需要环境 python 3.6.1scrapy 1.4selenium 3.4.3Pillow 4.2.1osrequests 我们可以使用selenium中的webdriver驱动来驱动本地的chrome浏览器然后实现自动输入用密码和密码的效果~OK先来一发效果图 ok,看完上面的效果觉得还可以的话您往下继续看你要是觉得这玩意太LOW B右上角x好走不送~要实现这个效果很简单但是我们需要做的是分析登录页面然后把用户名密码包括验证码传递进去然后点击登录就可以登录了但是这玩意怎么搞往下看 首先先导入一下我们所需的模块 1 import os
2 import requests
3 from PIL import Image
4 from time import sleep
5 from selenium import webdriver
6 from scrapy.selector import Selector View Code 简单的说下上面模块中导入的方法Image可以操作图片因为我们要把验证码下载到本地打码so...我们需要操作图片。这个使用就用得Image了~。Selector选择器是scrapy给我们提供的方法支持xpathcss等~很是牛逼requests呢去验证码的地址抓取图片返回并保存为文件然后通过Image去操作打开这个验证码的图片。 本次代码分为两个函数get_captcha函数用户获取验证码browser_login函数操作chrome自动登录。 get_captcha函数的实现: 1 def get_captcha(captcha_image_url):2 headers {User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36}3 captcha_image requests.get(captcha_image_url, headersheaders).content4 captcha_file captcha.jpg5 with open(captcha_file, wb) as f:6 f.write(captcha_image)7 image Image.open(captcha_file)8 image.show()9 captcha_code input(请输入验证码:).strip()
10 return captcha_code View Code 简单的说下上面函数分别实现了那些功能requests.get()这个方法第一个参数是我们要访问的url地址后面需要加上headers不然有些网站是不让访问的当然后面还可以加上代理不让跳转等参数具体的请看requests的源码可以通过调用content(requests.get(url,headers).content)获取url的二进制文件,还可以获取当前访问页面的html源码怎么用呢也很简单(requests.get(url,headers).text),这里我们获取了验证码地址上的图片文件with这个方法可以操作文件打开一个文件写入文件内容或者读取文件内容都是可以的包括可以读取二进制写入二进制文件都是ok这里我们通过with这个方法来把获取到的图片二进制写入到文件中图片的名称为capthca.jpg该文件在与代码的同层目录下当然可以自己设置保存的位置这里一切从简~。Image这个呢上面也提到过一下下就是操作图片的通过Image.open(图片文件的路径)在调用show方法就可以打开这个验证码的图片了我们有了验证码的图片就可以通过本地的输入以后然后传递回去。如果想要函数的返回结果部位None返回我们需要的结果这里就要用到return了。基础不好的话自己去补习吧阿西吧 ok前戏做足了我们获取了验证码以后用户名密码以及验证码都准备齐全了~这个时候我们只需要把这些值填入到chrom打开的豆瓣登录也中需要的位置即可怎么搞呢往下看我们需要通过browser_login函数来实现这个功能呢 browser_login函数实现 1 def browser_login(account, password):2 login_url https://accounts.douban.com/login3 browser webdriver.Chrome()4 browser.get(login_url)5 browser.set_window_size(1000, 700)6 browser.find_element_by_id(email).send_keys(account)7 browser.find_element_by_id(password).send_keys(password)8 try:9 browser.find_element_by_id(captcha_image)
10 response browser.page_source
11 selector Selector(textresponse)
12 captcha_image_url selector.xpath(//*[idcaptcha_image]/src).extract()[0]
13 except:
14 browser.find_element_by_name(login).click()
15 else:
16 captcha_code get_captcha(captcha_image_url)
17 browser.find_element_by_id(captcha_field).send_keys(captcha_code)
18 sleep(1)
19 browser.find_element_by_name(login).click()
20 browser.get(https://www.douban.com/accounts/)
21 sleep(5) View Code 说一下上面的代码实现了那些功能 webdriver.Chrome() #启动一个Chrome的浏览器 browser.get() #chrome浏览器要访问的网址 browser.find_element_by_id() #这个查找到我们登录html中的用户名的输入框后面的都是一个意思为啥要用id呢因为id这个样式是全局唯一的所需我们能最快速的定位用户名密码的位置 send_keys() #这个方法是干嘛用得呢我们通过id定位到了输入框的位置但是我们不传递值进去并没有卵用怎么传递值就是通过这个方法搞的把用户名密码传递进去搞定 click() #这个方法呢就是点击事件我们需要通过这个方法触发登录为毛要这样搞卧槽大哥你自己想想吧~想不出来放弃吧 两段代码就介绍完成了需要注意一点的是我们既然需要自己从键盘输入验证码so...在验证码输入之前不要让它selenium去触发登录按钮这也就是上面那段代码中sleep的意义我们需要时间把值传递进去不然值没传递进去你点你妹的登录呀能TMD登录么~好了这篇low版本的豆瓣登录就介绍完毕了想实现requests带cookie信息的登录加上自动打码的么哈哈哈~~我就不教你玩。你来打我呀打我呀你咬我 你咬我呀~ 附上完整的代码~ 1 # _*_ coding:utf-8 _*_2 import requests3 from PIL import Image4 from time import sleep5 from selenium import webdriver6 from scrapy.selector import Selector7 8 __author__ demon9
10 def get_captcha(captcha_image_url):
11 headers {User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36}
12 captcha_image requests.get(captcha_image_url, headersheaders).content
13 captcha_file captcha.jpg
14 with open(captcha_file, wb) as f:
15 f.write(captcha_image)
16 image Image.open(captcha_file)
17 image.show()
18 captcha_code input(请输入验证码:).strip()
19 return captcha_code
20
21 def browser_login(account, password):
22 login_url https://accounts.douban.com/login
23 browser webdriver.Chrome()
24 browser.get(login_url)
25 browser.set_window_size(1000, 700)
26 browser.find_element_by_id(email).send_keys(account)
27 browser.find_element_by_id(password).send_keys(password)
28 try:
29 browser.find_element_by_id(captcha_image)
30 response browser.page_source
31 selector Selector(textresponse)
32 captcha_image_url selector.xpath(//*[idcaptcha_image]/src).extract()[0]
33 except:
34 browser.find_element_by_name(login).click()
35 else:
36 captcha_code get_captcha(captcha_image_url)
37 browser.find_element_by_id(captcha_field).send_keys(captcha_code)
38 sleep(1)
39 browser.find_element_by_name(login).click()
40 browser.get(https://www.douban.com/accounts/)
41 sleep(5)
42
43 if __name__ __main__:
44 browser_login(登录豆瓣的用户名, 密码) 放一波自动登录的效果图~怎么玩自己去想吧啊哈哈哈哈哈 转载于:https://www.cnblogs.com/demon89/p/douban.html