如果你还没学会使用requests模块,请参考本教程的2-2期
如果你还不知道如何使用cookie,请参考本教程的2-3期
本期打算利用上2期学到的内容,实现一个简单的4399的登录,并通过登录内容获取信息
4399的个人中心地址:
首先,如果没有登录,直接访问
import requests
url = "https://u.4399.com/profile/"
headers = {"user-agent": "xialaodi"}
r = requests.get(url, headers=headers)
print(r.text)
获得了如下关键提示
<p class="regtip">还不是4399用户?现在免费注册4399用户,便能立即体验新潮、好玩的游戏哦!</p>
现在我们开始登录
import requests
url1 = "https://ptlogin.4399.com/ptlogin/login.do"
url2 = "https://u.4399.com/profile/"
headers = {"user-agent": "xialaodi"}
data = {"username": "xialaodi", "password": "123456"}
with requests.Session() as s:
s.headers.update(headers)
r1 = s.post(url1, data=data)
print(r1.status_code)
print(r1.text)
r2 = s.get(url2)
print(r2.status_code)
print(r2.text)
不出所料,一切顺利,得到了我们希望得到的关键信息
<td class="label">昵称 :</td>
<td class="input">瞎老弟</td>
<td class="label">邮箱 :</td>
<td class="input">1413274264@qq.com</td>
<td class="label">QQ :</td>
<td class="input">1413274264</td>
注意,以上代码不应直接复制运行,在data之中,应该替换为你自己的4399账号和密码,如果没有,可以先注册一个(注册无需手机号,很适合大家进行尝试,这也是本期为何选择4399的原因),然后再运行代码进行尝试
如果不想使用Session会话对象,我们也可以通过手动添加cookie的方式,改动后的代码如下
import requests
url1 = "https://ptlogin.4399.com/ptlogin/login.do"
url2 = "https://u.4399.com/profile/"
headers = {"user-agent": "xialaodi"}
data = {"username": "xialaodi", "password": "123456"}
r1 = requests.post(url1, headers=headers, data=data)
cookies = r1.cookies
r2 = requests.get(url2, headers=headers, cookies=cookies)
print("另外一种登录方式")
print(r2.text)
感兴趣的读者也可以更进一步,尝试如何使用requests注册4399账号