今天来一个比较屌的自动化登陆工具,selenium模块,这个模块,比较装逼啦~具体自行百度吧!这篇博客实现了什么功能呢~可以自动使用用户名和密码登录,当然,豆瓣对登录次数还有ip地址做了一些策略,例如当同一个ip地址过于频繁的登录,这个时候就会生成一个随机的验证码,有了验证码的话,我们在用用户和密码登录就挂掉了,肯定是提交不成功,登陆不到豆瓣个人页面!!!!怎么办,怎么办呢,慌NMB呀~想办法搞定验证码就是咯~ok.废话不多说,来看本次博文内容,教你搞定豆瓣的验证码!搞定验证码有两种方式,一种是手动打码,也就是通过抓取到登录页面中验证码的地址,然后把图片下载到本地打开以后,手动输入以后传递给浏览器验证码的地方(LOW B方法),虽然这种方法比较的LOW B,本次主要是为了教会大家利用selenium搞定豆瓣的登录,so..whatever,不要在乎low不 low了。另外一种办法,就是通过在线的打码平台搞(高大上),百度上找自动打码,有很多,我用过云打码和超级鹰都不错~,so...我是比较推荐用云打码的,具体怎么用,自行百度吧,本次博客不过多介绍!

  说下本次代码需要环境:

  1. python 3.6.1
  2. scrapy 1.4
  3. selenium 3.4.3
  4. Pillow 4.2.1
  5. os
  6. requests

  我们可以使用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给我们提供的方法,支持xpath,css等~,很是牛逼!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, headers=headers).content
 4     captcha_file = 'captcha.jpg'
 5     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/login'
 3     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(text=response)
12         captcha_image_url = selector.xpath('//*[@id="captcha_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

  说一下上面的代码实现了那些功能

  1.   webdriver.Chrome()                    #启动一个Chrome的浏览器
  2.   browser.get()                             #chrome浏览器要访问的网址
  3.   browser.find_element_by_id()     #这个查找到我们登录html中的用户名的输入框,后面的都是一个意思,为啥要用id呢,因为id这个样式是全局唯一的,所需我们能最快速的定位用户名密码的位置
  4. send_keys()                          #这个方法是干嘛用得呢,我们通过id定位到了输入框的位置,但是我们不传递值进去,并没有卵用,怎么传递值,就是通过这个方法搞的,把用户名密码传递进去,搞定!
  5. click()                                      #这个方法呢,就是点击事件,我们需要通过这个方法触发登录,为毛要这样搞,卧槽,大哥!你自己想想吧~想不出来,放弃吧!

  两段代码就介绍完成了,需要注意一点的是,我们既然需要自己从键盘输入验证码,so...在验证码输入之前,不要让它selenium去触发登录按钮,这也就是上面那段代码中sleep的意义,我们需要时间把值传递进去,不然值没传递进去,你点你妹的登录呀,能TMD登录么~!好了,这篇lowb版本的豆瓣登录就介绍完毕了~想实现requests带cookie信息的登录加上自动打码的么!哈哈哈~~我就不教你玩。你来打我呀,打我呀,你咬我 你咬我呀~

  附上完整的代码~

  

 1 # _*_ coding:utf-8 _*_
 2 import requests
 3 from PIL import Image
 4 from time import sleep
 5 from selenium import webdriver
 6 from scrapy.selector import Selector
 7
 8 __author__ = 'demon'
 9
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, headers=headers).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(text=response)
32         captcha_image_url = selector.xpath('//*[@id="captcha_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

渍渍渍~来一发豆瓣自动登录玩玩~相关推荐

  1. python爬虫 豆瓣影评的爬取cookies实现自动登录账号

    python爬虫 豆瓣影评的爬取cookies实现自动登录账号 频繁的登录网页会让豆瓣锁定你的账号-- 网页请求 使用cookies来实现的自动登录账号,这里的cookies因为涉及到账号我屏蔽了,具 ...

  2. pythoncookie自动登录_Python使用cookie 免密登录了解一下

    我们都知道 HTTP 是无状态的,用户每次打开 web 页面时,服务器都打开新的会话,而且服务器也不会自动维护客户的上下文信息,那么服务器是怎么识别用户的呢? 这就是本文今天要讲解的内容.当服务端需要 ...

  3. 如何使用cookie信息,完成自动登录

    在做爬虫任务的时候,我们常常会遇到很多网页必须登录后,才可以开放某些页面.所以登录是爬取网页的第一步.但是,通过post表单(包含用户名和密码)的方法,对于那些不需要输入比较复杂的验证码的网页,可以使 ...

  4. [Python] 豆瓣自动回帖、顶帖源码

    - [电脑端] 豆瓣自动顶贴 下载:http://xfxuezhang.cn/WEB/SHARE/ => [电脑版]豆瓣自动顶贴 - [安卓端] 豆瓣自动顶贴 下载:http://xfxuezh ...

  5. JB的Python之旅-豆瓣自动顶贴功能

    温馨小提示 全文加上代码总6.8k个字,阅读大约10分钟,谢谢你的点击,愿能解决你的问题: 前言 前几天在小猪群里,有同学问,有人知道怎么做豆瓣自动回复功能吗?然后群里就各种大神出马相助,各种填代码给 ...

  6. 豆瓣自动顶帖机器人JS脚本

    一.前言 网上很多基于python的豆瓣自动顶帖程序,但我选择JS脚本的实现方式,主要考虑了以下几点: 开发效率.运营成本是首要的.短平快的产出,后续可以转交别人,不需要花费我时间维护: 不需要太快的 ...

  7. selenium 实现自动登录校网(网页版)

    文章目录 selenium 实现自动登录校网 1.安装 python3.7 2.安装 selenium 3.安装 chrome 和驱动 4.定时任务 5.实现代码 selenium 实现自动登录校网 ...

  8. Linux Ubuntu 自动登录

    我一直在用Ubuntu发型版本的Linux系统,很喜欢把它做得更加的方便易用,特别是Ubuntu的Server版本,因为没有Desktop的 GUI界面,也没有自动登录设置,无法通过简单的点击鼠标方式 ...

  9. Cookie实现记住密码、自动登录

    前端代码 <form id="form" action="xxx" method="post"><div><i ...

最新文章

  1. linux下模拟CPU占用100%小程序
  2. (转)Android 使用com.j256.ormlite
  3. Compiling Cpp(zz)
  4. java属性监听_Java event事件监听属性值变化 demo
  5. 常用开发环境搭建配置教程(OneStall)
  6. 钉钉宣布品牌全新升级 首次明确回答了自身和生态的关系
  7. Python入门--列表的查询操作--获取列表知道那个元素的索引、获取列表中的单个元素、获取列表中的多个元素
  8. webstorm激活破解
  9. 浅谈Java及应用学java
  10. RPM包安装相关命令
  11. 苹果计算机音频无法使用,解决Mac电脑直播没有电脑内声音的问题
  12. python爬虫——中文编码
  13. 【零样本学习】Zero-Shot Learning via Class-Conditioned Deep Generative Models
  14. mysql relaylog清理_mysql 清除relay-log文件方法详解
  15. U-GAT-IT 论文翻译
  16. 程序员Linux命令常用大全
  17. PS-第四天-矢量形状与路径
  18. 索尼CCD和CMOS图像传感器
  19. python格式化方式
  20. seo优化什么意思?

热门文章

  1. 屏幕小于6英寸的手机_你认为全面屏手机屏幕多大尺寸最合适?6寸以下还够吗?...
  2. AD19(Altium Designer)改变敷铜颜色
  3. 大众「首次」全球采购“钦点”中国供应商,智能化时代的「出海」新趋势
  4. STM32F429连接USB飞行摇杆 (一) 连接摇杆
  5. 今年Java行情崩盘?说好的金三银四呢…
  6. PHP网站安装界面,网站-织梦-以及看不到织梦安装界面-织梦安装界面空白
  7. android sqlite union,SQLite Unions 子句
  8. RAFT: 分布式系统PAXOS 理解
  9. 【深度学习】李宏毅2021/2022春深度学习课程笔记 - Deep Learning Task Tips
  10. pytest学习和使用22-allure特性 丨总览中的Environment、Categories设置以及Flaky test使用