鱼C论坛

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

第54课爬虫登录豆瓣习题

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

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

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

x
本帖最后由 调皮博士 于 2017-1-8 18:19 编辑
# -- coding:utf-8- --
import re
import urllib,http.cookiejar
 
loginurl = 'https://www.douban.com/accounts/login'
cookie = http.cookiejar.CookieJar()
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor)
 
params = {
"form_email":"330xxxxxx@qq.com",
"form_password":"bobxxxxxxxxxxxxxx",
"source":"index_nav" 
}#没有的话登录不成功

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

else:print('登录不成功')

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

使用道具 举报

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

回帖奖励 +10 鱼币

登录不成功的话说明没有进入if判断:
#验证成功跳转至登录页
if response.geturl() == "https://www.douban.com/accounts/login":
我这测试时OK的 就是python3没有raw_input方法,改成input就好了。
ops@ubuntu:/alidata/uba_python/test$ python3 test2.py 
Traceback (most recent call last):
  File "test2.py", line 31, in <module>
    vcode=raw_input('请输入图片上的验证码:')
NameError: name 'raw_input' is not defined

ops@ubuntu:/alidata/uba_python/test$ python3 test3.py 
请输入图片上的验证码:
想知道小甲鱼最近在做啥?请访问 -> 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, 2025-2-8 22:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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