鱼C论坛

 找回密码
 立即注册
查看: 2052|回复: 2

[作品展示] 配合easygui的豆瓣登录程序,可以返回你的昵称(爬虫54课后题)

[复制链接]
发表于 2017-3-15 17:09:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
看了54课的课后题,小甲鱼的答案拿来运行貌似不能看到验证码图片。所以自己配合easygui写了一个。
增加的功能:可以在对话框输入用户名和密码
                        在对话框输入验证码
                        最后返回登录成功,且显示你的豆瓣昵称

先上效果:
~[GYUK`KIO@HD@PT3H}IJRT.png

N6ORFS@{V0U@B]H88QNA.png

}HQRUJPV4IJQ7DSX105~7EJ.png
上代码:

  1. import  re,easygui as g
  2. import urllib.request
  3. import http.cookiejar as hcj
  4. import urllib.parse
  5. import PIL
  6. fielde_userinfo = ['帐号','密码']
  7. val_userinfo = []
  8. input_userinfo = g.multenterbox('请输入帐号密码','登录框',fielde_userinfo,val_userinfo)

  9. loginurl = 'https://www.douban.com/accounts/login'
  10. cookie = hcj.CookieJar()
  11. opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cookie))

  12. params = {
  13.     "form_email":input_userinfo[0],
  14.     "form_password":input_userinfo[1],
  15.     "source":"index_nav",
  16.     "login":"登录"
  17. }
  18. response = opener.open(loginurl,urllib.parse.urlencode(params).encode('utf-8'))
  19. if response.geturl() == 'https://www.douban.com/accounts/login':
  20.     html = response.read().decode('utf-8')
  21.     #通过正则表达式去得到图片地址
  22.     captcha_img_url = re.search('<img id="captcha_image" src="(.+?)" alt="captcha" class="captcha_image"/>',html)
  23.     #获取到验证码图片
  24.     if captcha_img_url:
  25.         img_response = urllib.request.urlopen(captcha_img_url.group(1))
  26.         img_captcha = img_response.read()
  27.         #文件路径,自己随便存在你本地就行了
  28.         filename = 'E:\\project\\python\\cp.jpg'
  29.         with open(filename,'wb') as f:
  30.             f.write(img_captcha)
  31.         ccode = g.enterbox(msg='请输入验证码', image=filename)

  32.         #得到验证码的captcha-id
  33.         captcha_id = re.search('<input type="hidden" name="captcha-id" value="(.+?)"/>',html)
  34.         if captcha_id:
  35.             #ccode = input('请输入验证码')
  36.             params['captcha-solution'] = ccode
  37.             params['captcha-id'] = captcha_id.group(1)
  38.             response = opener.open(loginurl, urllib.parse.urlencode(params).encode('utf-8'))
  39.             html_1 = response.read().decode('utf-8')
  40.             nickname = re.search(r'<span>(.+?)的帐号</span><span class="arrow"></span>',html_1)
  41.             html = response.geturl()
  42.             if html == 'https://www.douban.com/':
  43.                 g.msgbox('登录成功了哦\n你的昵称是"%s"'%(nickname.group(1)))
复制代码

注意:你自己本地要安装PIL库哦
有鱼币的小伙伴送点鱼币呀,QAQ

评分

参与人数 2荣誉 +2 鱼币 +9 贡献 +1 收起 理由
Ifound + 1 热爱鱼C^_^
零度非安全 + 2 + 8 + 1 不错!!!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-3-15 17:14:33 | 显示全部楼层
应该是还可以完善的。可以综合前面那个下猫猫图片那个题来限制判断输入的性质
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-25 15:29:49 | 显示全部楼层
问54讲的可以来看看了!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 06:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表