模拟登陆豆瓣

2016-11-27  本文已影响246人  蜗牛仔
import requests
import lxml
from lxml import html



header={
    'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.3'
}

url = 'https://accounts.douban.com/login?'

伪造data,这里的验证码选择手打,将访问时候的验证码图片下载到本地

Paste_Image.png



def get_id():这个函数用于找到登陆时候的验证码,以及匹配data里面的captcha-id
    url = 'https://accounts.douban.com/login?'
    data = requests.get(url).content
    selector = lxml.html.document_fromstring(data)
    id = selector.xpath('//input[@name="captcha-id"]/   @value')
    image_url=selector.xpath('//img[@id="captcha_image"]/@src')这里是下载验证码图片
    print(id, image_url)
    with open('login.png','wb')as  f:
        f.write(requests.get(image_url[0]).content)
        f.close()
    return id
#get_id()
def get_login():
    id=get_id()
    login_number=input('请输入验证码:')

    data = {
        'source': None,
        'redir': 'https://www.douban.com/',
        'form_email': '',
        'form_password': '',这里本人的账户密码就隐藏了吧
        'captcha-solution': login_number,
        'captcha-id': id,
        'login': '登录'
    }
    session = requests.Session()
    result = session.post('https://accounts.douban.com/login?',data=data,headers=header)
    admin_id=input('请输入访问的用户ID:')要访问豆瓣哪个用户,有些用户的主页是要登陆才能看到,
    有些则不用,这里选取的是需要登陆才能看到的用户
    front_page=session.get('https://www.douban.com/people/{}/'.format(admin_id))以后登陆豆瓣的页面
    直接用session.get(url,headers=header)就可以了
    print(front_page.content.decode())打印登陆后的页面

get_login()



登陆结果显示,前面是没有登陆的结果

Paste_Image.png

登陆后

Paste_Image.png
Paste_Image.png
上一篇 下一篇

猜你喜欢

热点阅读