1. 首先分析请求, 打开 4399 网站.
image
右键检查元素或者 F12 打开开发者工具. 然后找到 network 选项,
image
这里最好勾选 perserve log 选项, 用来保存请求日志. 这时我们来先用我们的账号密码登陆一下, 然后查看一下截获的请求
image
可以很清楚的看到这里有个 login, 而且这个请求是 post 请求, 下拉查看一下 Form data, 也就是表单数据
image
可以很清楚的看到我们的刚才登录发送给服务器的表单数据, 更重要的是, 除了 uername 和 password 之外, 所有的数据都是一成不变的, 这意味着我们不需要解析网页的源码获得信息, 只需要把用户名和密码提交上去就行, 下面开始构建我们的代码.
- import requests
- #模拟登陆 4399 成功 一定要灵活运用 session() 这个好东西
- #这是我们要提交的表单
- data={
- 'loginFrom':'uframe',
- 'postLoginHandler':'default',
- 'layoutSelfAdapting':'true',
- 'externalLogin':'qq',
- 'displayMode':'popup',
- 'layout':'vertical',
- 'appId':'www_home',
- 'mainDivId':'popup_login_div',
- 'includeFcmInfo':'false',
- 'userNameLabel':'4399 用户名',
- 'userNameTip':'请输入 4399 用户名',
- 'welcomeTip':'欢迎回到 4399',
- 'username':'1252452801125',
- 'password':'1252452801'
- }
- headers={
- 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) ApplewebKit/537.36 (Khtml, like Gecko) Chrome/74.0.3729.131 Safari/537.36'
- }
- url='http://ptlogin.4399.com/ptlogin/login.do?v=1'
- session=requests.Session()
- res=session.post(url=url,data=data,headers=headers)
- res2=session.get(url='http://u.4399.com/user/info',headers=headers) #成功登陆以后, 查看我们的用户数据
- #这里把我们的请求结果保存到文件
- f=open('4399.html','wb')
- f.write(res2.content)
- f.close()
运行起来, 然后查看我们保存的 HTML 文件,
image
模拟登录成功! 这就是我们个人用户信息的源代码.
这个例子主要讲了 requests 的 post 方法, 用于 post 请求, 还有很重要的 session, 用于维持会话
如果你对 Python 编程感兴趣, 那么记得来小编的 Python 学习扣群: 556370268, 这里有资源共享, 技术解答, 大家可以在一起交流 Python 编程经验, 还有小编整理的一份 Python 学习教程, 希望能帮助大家更好的学习 python.
image
来源: http://www.jianshu.com/p/f12396a4ed4f