豆瓣登录(分析和总结)

豆瓣登录
关于豆瓣登录,从网站分析入手
图1
豆瓣登录(分析和总结)_第1张图片
图2
豆瓣登录(分析和总结)_第2张图片
图3
豆瓣登录(分析和总结)_第3张图片
图4
豆瓣登录(分析和总结)_第4张图片
分析完开始写代码

import requests#爬虫主要用的库
from copyheaders import headers_raw_to_dict#非常好的一个制作headers头的一个库
import re#正则表达式匹配信息
from PIL import Image#用于显示验证码信息
session = request.Session()#用于登录并且访问内部其他网址否则无法登录
headers = headers_raw_to_dict(b"""Accept:image/webp,image/apng,image/*,*/*;q=0.8
Accept-Encoding:gzip, deflate, br
Accept-Language:zh-CN,zh;q=0.9
Connection:keep-alive
Cookie:bid=d8Mfqyd9R44; ll="118124"; gr_user_id=d5043752-8950-4aca-b1b1-db54ab444e3b; _vwo_uuid_v2=F91C24C9D31DADD1995D2491D51945C1|af04cd7cd768eb6f82e72bd60f540603; __yadk_uid=rct0VwmTyu3rBqMorDrc66iYz5ZpYRKi; _ga=GA1.2.706020112.1513727806; ps=y; push_noty_num=0; push_doumail_num=0; __utmv=30149280.17262; ap=1; __utmz=30149280.1522575632.5.5.utmcsr=so.com|utmccn=(organic)|utmcmd=organic|utmctr=douba; _pk_ref.100001.8cb4=%5B%22%22%2C%22%22%2C1522830643%2C%22https%3A%2F%2Fwww.so.com%2Fs%3Fq%3D%25E8%25B1%2586%25E7%2593%25A3%26src%3Dsrp%26fr%3Dlm%26psid%3D6774dc6607bac6cc171b10f7887b03b9%26ls%3Dsm2185851%26lm_extend%3Dctype%253A31%22%5D; _pk_ses.100001.8cb4=*; __utma=30149280.706020112.1513727806.1522575632.1522830646.6; __utmc=30149280; _gid=GA1.2.1923349615.1522830646; ct=y; _pk_id.100001.8cb4=e4858d10d0ca5582.1513754751.14.1522832070.1522575849.; __utmt=1; __utmb=30149280.9.10.1522830646; as="https://www.douban.com/"
Host:www.douban.com
Referer:https://www.douban.com/accounts/login
User-Agent:Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36""")#将浏览器中那一大坨放进去即可不需要再构建成字典格式因此比较方便,直接copy即可
session.headers.update(headers)
data={
    'source':'index_nav',
    'form_email':'你的账号',
    'form_password':'你的密码',
    'login':'登录'
}
data = session.post(url = "https://accounts.douban.com/login",data = data)#先将部分参数post服务器然后获取验证码进行登录
pattern=re.compile(r' name="captcha-id" value="(.*?)"')#匹配数据
if pattern:
    message=pattern.findall(message1.text)[0]
    print(message)
    data['captcha-id']=message
    capture=session.get(url='https://www.douban.com/misc/captcha?id={}&size=s'.format(message))#注意验证码也要用session方式获取要不然可能不能登录
    'https://www.douban.com/misc/captcha?id=SKtAQrcHMiDG1FArMzyVOM1x:en&size=s'#通过分析和对比得到网址是获取的captcha-id的值
    'https://www.douban.com/misc/captcha?id=euFt1qRlEbfWGVyGO0h5oKu2:en&size=s'
    with open('capture.jpg','wb')as f:#将图片保存到本地
        f.write(capture.content)
    image=Image.open('capture.jpg')#显示验证码并且输入验证码
    image.show()
    data['captcha-solution']=input('输入验证码')
    print(data)
    data=session.post(url='https://accounts.douban.com/login',data=data)#将数据再次传送到登录网址到此登录成功然后搜索一下你的名字看看是否存在,本人尝试此代码可行。主要是掌握爬虫的思路和分析过程,以后当次代码不可用时再进行分析
    print(data.text)
else:
    print(message1.text)

通过此代码就可登录豆瓣,以后有时间的话可能会学一下验证码自动识别功能,希望采纳

你可能感兴趣的:(豆瓣登录(分析和总结))