|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 一个账号 于 2020-3-7 14:48 编辑
完成了一次简单的豆瓣登录过程,写得代码有点简单,还需不断优化;
知识补充:
1、什么是自定义opener、什么是代理、如何设置cookie
ps:我们平时用的urlopen不支持cookie(用来服务器验证客户端身份)和proxy代理(用来反爬)等,所以需要自定义opener,以支持上述功能
链接:https://www.jianshu.com/p/a5460bc773c8
代码清单:
- import urllib.request
- from http.cookiejar import CookieJar
- import json
- def main():
- # 豆瓣的登录url
- loginurl = 'https://accounts.douban.com/j/mobile/login/basic'
- #构建CookieJar对象,存储cookie信息
- cookie = CookieJar() #程序运行后,可以输出cookie看下,嘻嘻
- opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cookie))
- #创建一个header头部,用来反爬
- user_agent = 'Mozilla/5.0 3578.98 Safari/537.36'
- headers ={'User-Agent':user_agent}
- '''输入你的账号/密码'''
- data = {}
- data['name'] = '你的账号'
- data['password'] = '你的密码'
- data['remember'] = 'false'
- req= urllib.request.Request(loginurl,urllib.parse.urlencode(data).encode('utf-8'),headers)
- res = opener.open(req)
- html = res.read().decode('utf-8')
- print(type(html)) #追踪,发现是str类型的
- print(html) #同上,需要转化成json格式
- a= json.loads(html) #转化为json格式
- if a['status'] == 'success':
- print('登录成功')
- else:
- print('登录失败')
- if __name__ == '__main__':
- main()
复制代码 |
|