python 12306登录_Python 12306登陆详细分析及操作
前面的話: 1.第一次嘗試爬蟲,登陸12306,有不足的地方,望大家留言告知,謝謝。
2.前面引入了一個requests模塊,我不多說,大家都知道干啥的。還有config是我的一個配置文件,因為其中涉及到賬號密碼。
3.每一部分都注釋的比較清楚,大家應該都能看得懂,發完這篇文章后,會繼續去研究,待下一次發一個完整版的搶票代碼。
import requests
import config
# request 的 cookie 保存
person = requests.Session()
# 1. 訪問登錄界面
login_init_response = person.get(url='https://kyfw.12306.cn/otn/login/init')
# print(login_init_response.text)
# 2. 請求驗證碼
captcha_url = \
"https://kyfw.12306.cn/passport/captcha/captcha-image?login_site=E&module=login&rand=sjrand&0.31745546375395106"
captcha_response = person.get(url=captcha_url)
captcha_content = captcha_response.content # 轉換類型
fb = open('captcha.jpg', 'wb') # 把字節類型轉換為圖片文件
fb.write(captcha_content)
fb.close()
# 3. 檢驗驗證碼
captcha_check_url = \
'https://kyfw.12306.cn/passport/captcha/captcha-check'
captcha_check_data = {
'answer': input('請輸入驗證碼坐標>>>:'),
'login_site': 'E',
'rand': 'sjrand'
}
check_response = person.post(url=captcha_check_url, data=captcha_check_data)
# print(check_response.text)
# 4. 檢驗用戶名和密碼
login_url = 'https://kyfw.12306.cn/passport/web/login'
login_data = {
'username': config.username,
'password': config.password,
'appid': 'otn'
}
login_response = person.post(url=login_url, data=login_data)
print(login_response.text)
if login_response.json()['result_code'] != 0:
exit("用戶名或密碼錯誤!")
# 5. 獲取權限數據token(為下一步操作做準備)
token_url = 'https://kyfw.12306.cn/passport/web/auth/uamtk'
token_data = {
'appid': 'otn'
}
token_response = person.post(url=token_url, data=token_data)
print(token_response.text)
token_res = token_response.json()
# 6. 獲取操作權限
auth_url = 'https://kyfw.12306.cn/otn/uamauthclient'
auth_data = {
'tk': token_res['newapptk']
}
auth_response = person.post(url=auth_url, data=auth_data)
print(auth_response.text)
運行結果:
總結
以上是生活随笔為你收集整理的python 12306登录_Python 12306登陆详细分析及操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 冒泡机制
- 下一篇: websocket python爬虫_p