1.首先分析请求,打开4399网站。
![7d342eb3939a470751b222d0fc601246.png](https://i-blog.csdnimg.cn/blog_migrate/6201d9e4d7aeae46b02be2ef41b6ba3b.jpeg)
右键检查元素或者F12打开开发者工具。然后找到network选项,
![38f22d7bf8b6b196db06e7eee42a780c.png](https://i-blog.csdnimg.cn/blog_migrate/514c921f0ac8c4fe417ff581d2ac0d3f.jpeg)
这里最好勾选perserve log 选项,用来保存请求日志。这时我们来先用我们的账号密码登陆一下,然后查看一下截获的请求
![df02462e5fad83b08ff6ab4f042fdb17.png](https://i-blog.csdnimg.cn/blog_migrate/716d04e2ee187f518020ffb5aff4f4ca.jpeg)
可以很清楚的看到这里有个login,而且这个请求是post请求,下拉查看一下Form data,也就是表单数据
![4529af263205b4caede9efff3604678d.png](https://i-blog.csdnimg.cn/blog_migrate/b7b3ac64d92ccfa740adee2c0f60590c.jpeg)
可以很清楚的看到我们的刚才登录发送给服务器的表单数据,更重要的是,除了uername和password之外,所有的数据都是一成不变的,这意味着我们不需要解析网页的源码获得信息,只需要把用户名和密码提交上去就行,下面开始构建我们的代码。
1 import requests 2 #模拟登陆4399 成功 一定要灵活运用session()这个好东西 3 #这是我们要提交的表单 4 data={ 5 'loginFrom':'uframe', 6 'postLoginHandler':'default', 7 'layoutSelfAdapting':'true', 8 'externalLogin':'qq', 9 'displayMode':'popup',10 'layout':'vertical',11 'appId':'www_home',12 'mainDivId':'popup_login_div',13 'includeFcmInfo':'false',14 'userNameLabel':'4399用户名',15 'userNameTip':'请输入4399用户名',16 'welcomeTip':'欢迎回到4399',17 'username':'1252452801125',18 'password':'1252452801'19 }20 headers={21 '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'22 }23 url='http://ptlogin.4399.com/ptlogin/login.do?v=1'24 session=requests.Session()25 res=session.post(url=url,data=data,headers=headers) 26 res2=session.get(url='http://u.4399.com/user/info',headers=headers) #成功登陆以后,查看我们的用户数据27 #这里把我们的请求结果保存到文件28 f=open('4399.html','wb')29 f.write(res2.content)30 f.close()
运行起来,然后查看我们保存的html文件,
![aa55208094f869ffab1c5f94ed27c524.png](https://i-blog.csdnimg.cn/blog_migrate/5c1d760a400edab6ff28ef511cb2d815.jpeg)
模拟登录成功! 这就是我们个人用户信息的源代码。
这个例子主要讲了requests 的post方法,用于post请求,还有很重要的session,用于维持会话
如果你对Python编程感兴趣,那么记得私信小编“007”领取全套Python资料哦。
![27c77a481945f9070dc1b58b808d9840.png](https://i-blog.csdnimg.cn/blog_migrate/bb86d9ac3c7a99852242f7dd6d5d2850.jpeg)