鱼C论坛

 找回密码
 立即注册
查看: 2542|回复: 5

第54课爬虫登录豆瓣习题

[复制链接]
发表于 2017-1-7 10:48:26 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 调皮博士 于 2017-1-8 18:19 编辑
  1. # -- coding:utf-8- --
  2. import re
  3. import urllib,http.cookiejar

  4. loginurl = 'https://www.douban.com/accounts/login'
  5. cookie = http.cookiejar.CookieJar()
  6. opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor)

  7. params = {
  8. "form_email":"330xxxxxx@qq.com",
  9. "form_password":"bobxxxxxxxxxxxxxx",
  10. "source":"index_nav"
  11. }#没有的话登录不成功

  12. #从首页提交登录
  13. response=opener.open(loginurl, urllib.parse.urlencode(params).encode('utf-8'))

  14. #验证成功跳转至登录页
  15. if response.geturl() == "https://www.douban.com/accounts/login":
  16.     html=response.read().decode('utf-8')

  17.     #验证码图片地址
  18.     imgurl=re.search('<img id="captcha_image" src="(.+?)" alt="captcha" class="captcha_image"/>', html)
  19.     if imgurl:
  20.         url=imgurl.group(1)
  21.         #将图片保存至同目录下
  22.         res=urllib.request.urlretrieve(url, 'v.jpg')
  23.         #获取captcha-id参数
  24.         captcha=re.search('<input type="hidden" name="captcha-id" value="(.+?)"/>' ,html)
  25.         if captcha:
  26.             vcode=raw_input('请输入图片上的验证码:')
  27.             params["captcha-solution"] = vcode
  28.             params["captcha-id"] = captcha.group(1)
  29.             params["user_login"] = "登录"
  30.             #提交验证码验证
  31.             response=opener.open(loginurl, urllib.parse.urlencode(params).encode('utf-8'))
  32.             ''' 登录成功跳转至首页 '''
  33.             if response.geturl() == "http://www.douban.com/":
  34.                 print('login success ! ')

  35. else:print('登录不成功')
复制代码


如上,为参考答案后修改的程序,基本上和答案差不多了,可运行还是提示登录不成功。
用response.urlget()查得到的是‘http://www.douban.com
帐号密码那里我试过填自己的帐号密码也试过不填就照抄原文,结果一样。
我怀疑是source=‘index_nav’这里有问题,望大牛帮我看看什么原因。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-1-12 10:41:18 | 显示全部楼层

回帖奖励 +10 鱼币

登录不成功的话说明没有进入if判断:
  1. #验证成功跳转至登录页
  2. if response.geturl() == "https://www.douban.com/accounts/login":
复制代码

我这测试时OK的 就是python3没有raw_input方法,改成input就好了。
  1. ops@ubuntu:/alidata/uba_python/test$ python3 test2.py
  2. Traceback (most recent call last):
  3.   File "test2.py", line 31, in <module>
  4.     vcode=raw_input('请输入图片上的验证码:')
  5. NameError: name 'raw_input' is not defined

  6. ops@ubuntu:/alidata/uba_python/test$ python3 test3.py
  7. 请输入图片上的验证码:
复制代码

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

使用道具 举报

发表于 2017-1-17 20:01:48 | 显示全部楼层

回帖奖励 +10 鱼币

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

使用道具 举报

发表于 2017-1-18 15:02:53 | 显示全部楼层

回帖奖励 +10 鱼币

如果程序没问题就是登陆不成功的话,应该较大可能就是输入密码和账号的输入语句有问题,导致一直验证不成功。楼主可以排查一下输入
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-19 00:02:11 | 显示全部楼层
为什么我运行了验证码的图片显示不出来啊???
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-6-26 20:15:19 | 显示全部楼层
一直登陆不成功
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 12:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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