|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
看了54课的课后题,小甲鱼的答案拿来运行貌似不能看到验证码图片。所以自己配合easygui写了一个。
增加的功能:可以在对话框输入用户名和密码
在对话框输入验证码
最后返回登录成功,且显示你的豆瓣昵称
先上效果:
上代码:
- import re,easygui as g
- import urllib.request
- import http.cookiejar as hcj
- import urllib.parse
- import PIL
- fielde_userinfo = ['帐号','密码']
- val_userinfo = []
- input_userinfo = g.multenterbox('请输入帐号密码','登录框',fielde_userinfo,val_userinfo)
- loginurl = 'https://www.douban.com/accounts/login'
- cookie = hcj.CookieJar()
- opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cookie))
- params = {
- "form_email":input_userinfo[0],
- "form_password":input_userinfo[1],
- "source":"index_nav",
- "login":"登录"
- }
- response = opener.open(loginurl,urllib.parse.urlencode(params).encode('utf-8'))
- if response.geturl() == 'https://www.douban.com/accounts/login':
- html = response.read().decode('utf-8')
- #通过正则表达式去得到图片地址
- captcha_img_url = re.search('<img id="captcha_image" src="(.+?)" alt="captcha" class="captcha_image"/>',html)
- #获取到验证码图片
- if captcha_img_url:
- img_response = urllib.request.urlopen(captcha_img_url.group(1))
- img_captcha = img_response.read()
- #文件路径,自己随便存在你本地就行了
- filename = 'E:\\project\\python\\cp.jpg'
- with open(filename,'wb') as f:
- f.write(img_captcha)
- ccode = g.enterbox(msg='请输入验证码', image=filename)
- #得到验证码的captcha-id
- captcha_id = re.search('<input type="hidden" name="captcha-id" value="(.+?)"/>',html)
- if captcha_id:
- #ccode = input('请输入验证码')
- params['captcha-solution'] = ccode
- params['captcha-id'] = captcha_id.group(1)
- response = opener.open(loginurl, urllib.parse.urlencode(params).encode('utf-8'))
- html_1 = response.read().decode('utf-8')
- nickname = re.search(r'<span>(.+?)的帐号</span><span class="arrow"></span>',html_1)
- html = response.geturl()
- if html == 'https://www.douban.com/':
- g.msgbox('登录成功了哦\n你的昵称是"%s"'%(nickname.group(1)))
复制代码
注意:你自己本地要安装PIL库哦
有鱼币的小伙伴送点鱼币呀,QAQ |
评分
-
查看全部评分
|