Python爬虫——登录
-
打开抓包工具,在network‘中勾选preserve log选项,点击登录
-
在network中可以捕获到相关的包,点击login
-
可以得到url值和请求的方式为post请求。
往下拖动可以得到该请求所需要的参数列表 -
得到服务器端给客户端发送的cookie值。(cookie值用来记录用户已经登录的这个状态,以此为凭据访问用户的数据)
-
得到需要访问数据的url
代码如下:(Code类的编写,请转到python爬虫——验证码识别)python爬虫——验证码识别
import requests
from lxml import etree
import Code
if __name__ == '__main__':
#session与request的get,post方法相同,但其可以将服务器返回的cookie数据进行存储
session = requests.session()
#login里的url
url_login = 'http://ptlogin.4399.com/ptlogin/login.do?v=1'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36'
}
data = {
'loginFrom': 'uframe',
'postLoginHandler': 'default',
'layoutSelfAdapting': 'true',
'externalLogin': 'qq',
'displayMode': 'popup',
'layout': 'vertical',
'appId': 'www_home',
'gameId': '',
'css': '',
'redirectUrl': '',
'sessionId': '',
'mainDivId': 'popup_login_div',
'includeFcmInfo': 'false',
'level': '0',
'regLevel': '4',
'userNameLabel': '4399用户名',
'userNameTip': '请输入4399用户名',
'welcomeTip': '欢迎回到4399',
'sec': '1',
'password': 'U2FsdGVkX1++sW2ayFBjjX/XLx9cy5esN2ke9Dk66oWoO9F2kLKPe4jRP0RQpPZv',
'username': 'cyan_tree'
}
#发送登录请求
response = session.post(url=url_login, data=data, headers=headers)
login_text = response.text
#判断是否登录成功,如果成功response.status_code==200
print(response.status_code)
with open('4399.html', 'w', encoding='utf-8') as fp:
fp.write(login_text)
#用户界面的url
detail_url = 'https://u.4399.com/profile/'
response = session.get(url=detail_url, headers=headers)
#防止出现乱码
response.encoding = 'utf-8'
detail_page_text = response.text
#持久化存储
with open('detail.html', 'w', encoding='utf-8') as fp:
fp.write(detail_page_text)
print('over')