最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python實(shí)現(xiàn)圖書(shū)館搶座(自動(dòng)預(yù)約)功能的示例代碼

 更新時(shí)間:2020年09月29日 09:28:34   作者:XUchenmp  
這篇文章主要介紹了python實(shí)現(xiàn)圖書(shū)館搶座(自動(dòng)預(yù)約)功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

腳本功能

系統(tǒng)開(kāi)放座位時(shí)快速預(yù)約指定位置

可以設(shè)置預(yù)約的時(shí)間段

運(yùn)行以后會(huì)一直幫你搶,需要手動(dòng)停止

即使遇到更強(qiáng)的腳本自動(dòng)幫搶下一個(gè)座位

實(shí)現(xiàn)

首先解決登錄問(wèn)題,通過(guò)F12找出登錄請(qǐng)求包,分析對(duì)比一下包可以發(fā)現(xiàn)一般只有用戶名和密碼這個(gè)參數(shù)是變化的,然后用requests.session()的實(shí)例化去請(qǐng)求登錄接口,登錄成功。

然后預(yù)約座位抓一下包,分析包找到變化的關(guān)鍵的參數(shù),一般情況下關(guān)鍵參數(shù)只有座位id、開(kāi)始時(shí)間、結(jié)束時(shí)間,其他的參數(shù)一股腦照搬就行了,接下來(lái)用剛剛登錄成功的那個(gè)requests.session()實(shí)例去請(qǐng)求即可。

優(yōu)化

既然是每天都幫搶那么一直去請(qǐng)求可不行,一是給服務(wù)器造成負(fù)擔(dān),二是如果有什么反爬策略容易被發(fā)現(xiàn)被封。所以每天到12點(diǎn)(系統(tǒng)預(yù)約開(kāi)放時(shí)間)的時(shí)候發(fā)預(yù)約包就行。

萬(wàn)一腳本撞車了沒(méi)搶到自己設(shè)定的座位怎么辦,返回預(yù)約的結(jié)果,發(fā)現(xiàn)已經(jīng)有人了自動(dòng)預(yù)約下一個(gè)座位,也可以將自己心儀的座位寫在列表里,這個(gè)搶不到搶下一個(gè)。

代碼

(為了不給學(xué)校系統(tǒng)添加負(fù)擔(dān),代碼僅供參考,無(wú)法直接運(yùn)行)

import requests
from datetime import date
from datetime import timedelta
import json
import getopt
import sys
import time
 
global headers
headers = {
 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:80.0) Gecko/20100101 Firefox/80.0',
 'Host': '',
 
}
 
#登錄函數(shù)
def login(id, pwd):
 
 l_params = {
 'id': id,
 'pwd': pwd,
 'act': 'login',
 }
 #自己分析得到的接口,下同
 login_url = ''
 s = requests.session()
 re = s.post(url=login_url, headers=headers, params=l_params)
 #返回登錄成功的實(shí)例
 return s
 
#預(yù)約函數(shù)
def yd(s, start, end, s_id):
 y_params = {
 "dialogid": "",
 #預(yù)定座位
 "dev_id": s_id,
 "room_id":"",
 "type":"dev",
 "prop":"",
 "number":"",
 "classkind":"",
 "test_name":"",
 "start": start,
 "end": end,
 "start_time": "800",
 "end_time": "2200",
 }
 y_url = ''
 re = s.get(url=y_url, headers=headers, params=y_params)
 print(re.text)
 res = json.loads(re.text)
 msg = res['msg']
 if msg == '操作成功!':
 print('success')
 return 1
 elif msg == '2020-09-11只能提前[1]天預(yù)約':
 return 0
 else:
 print('fail')
 return 2
 
#腳本輸入提示信息
def useage():
 print(
	'''
	Usage:
	 -i 學(xué)號(hào)(必填)
	 -p 密碼
	 -s 座位id
	 -b 開(kāi)始時(shí)間,格式13:00,下同
	 -e 結(jié)束時(shí)間
	''')
 
if __name__ == '__main__':
 id = pwd = None
 #不填默認(rèn)搶這個(gè)這個(gè)時(shí)間段的這個(gè)座位
 s_id = '100458282'
 begin = '8:00'
 end = '22:00'
 
 #處理輸入
 try:
 opts, args = getopt.getopt(sys.argv[1:], 'i:p:s:b:e:')
 for name, value in opts:
  if name == '-i':
  id = value
  if name == '-p':
  pwd = value
  if name == '-s':
  s_id = value
  if name == '-b':
  begin = value
  if name == '-e':
  end = value
 except getopt.GetoptError:
 useage()
 if not id:
 useage()
 sys.exit(3)
 if not pwd:
 pwd = id
 
 #先獲取后天時(shí)間
 aftertomorrow = date.isoformat(date.today() + timedelta(days=2))
 while True:
 hour = int(time.strftime('%H',time.localtime(time.time())))
 m = int(time.strftime('%M', time.localtime(time.time())))
 #如果現(xiàn)在的明天等與之前的后天,即到了12點(diǎn),開(kāi)始搶座
 if date.isoformat(date.today() + timedelta(days=1)) == aftertomorrow:
 
  s = login(id, pwd)
 
  start = aftertomorrow + ' ' + begin
  endtime = aftertomorrow + ' ' + end
  result = yd(s, start, endtime, s_id)
 
  if result == 1:
  #預(yù)約成功
  aftertomorrow = date.isoformat(date.today() + timedelta(days=2))
  sleep_time = (23 - hour) * 3600 + (59 - m) * 60 + 35
  print('程序休眠{}s'.format(sleep_time))
  print(aftertomorrow)
  time.sleep(sleep_time)
 
  elif result == 2:
  #被預(yù)約,搶下一個(gè)id的座位
  s_id = str(int(s_id) - 1)
  continue
  else:
  continue
 else:
  sleep_time = (23 - hour) * 3600 + (59 - m) * 60
  time.sleep(sleep_time)

結(jié)語(yǔ)

不知道你們的學(xué)校圖書(shū)館預(yù)約系統(tǒng)是什么樣的,但是一般學(xué)校也不會(huì)花太多錢去搞這個(gè),所以系統(tǒng)比較垃圾,大部分可以按照這個(gè)思路來(lái)。而且有些學(xué)校跟我們學(xué)校用的幾乎相同的系統(tǒng),肯定是出自同一個(gè)公司或者同一個(gè)模板的。如果你們學(xué)校也是類似的系統(tǒng),代碼改一下就能用。

我學(xué)校的系統(tǒng)主頁(yè)大概長(zhǎng)這樣

到此這篇關(guān)于python實(shí)現(xiàn)圖書(shū)館搶座(自動(dòng)預(yù)約)功能的示例代碼的文章就介紹到這了,更多相關(guān)python圖書(shū)館預(yù)約內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python pandas軸旋轉(zhuǎn)stack和unstack的使用說(shuō)明

    Python pandas軸旋轉(zhuǎn)stack和unstack的使用說(shuō)明

    這篇文章主要介紹了Python pandas軸旋轉(zhuǎn)stack和unstack的使用說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-03-03
  • python中reduce()函數(shù)的使用方法示例

    python中reduce()函數(shù)的使用方法示例

    reduce() 函數(shù)會(huì)對(duì)參數(shù)序列中元素進(jìn)行累積,下面這篇文章主要給大家介紹了關(guān)于python中reduce()函數(shù)的使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2017-09-09
  • python之js逆向功能演示詳解

    python之js逆向功能演示詳解

    這篇文章主要為大家介紹了python之js逆向功能演示詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • Python中UserWarning:The NumPy module was reloaded問(wèn)題的解決方案

    Python中UserWarning:The NumPy module was 

    在 Python 項(xiàng)目中,我們經(jīng)常需要導(dǎo)入許多庫(kù)來(lái)完成各種任務(wù),NumPy 作為一個(gè)核心的科學(xué)計(jì)算庫(kù),被廣泛應(yīng)用于數(shù)據(jù)處理和分析,然而,有時(shí)我們會(huì)遇到 NumPy 重載的警告,本文將詳細(xì)講解這一警告的原因,并提供解決方案,需要的朋友可以參考下
    2024-07-07
  • Python Selenium破解滑塊驗(yàn)證碼最新版(GEETEST95%以上通過(guò)率)

    Python Selenium破解滑塊驗(yàn)證碼最新版(GEETEST95%以上通過(guò)率)

    這篇文章主要介紹了Python Selenium破解滑塊驗(yàn)證碼最新版(GEETEST95%以上通過(guò)率),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • pandas常用表連接merge/concat/join/append詳解

    pandas常用表連接merge/concat/join/append詳解

    使用python的pandas庫(kù)可以很容易幫你搞定,而且性能也是很出色的;百萬(wàn)級(jí)的表關(guān)聯(lián),可以秒出,本文給大家分享pandas常用表連接merge/concat/join/append詳解,感興趣的朋友跟隨小編一起看看吧
    2023-02-02
  • Python文本的藝術(shù)字符串處理技巧掌握

    Python文本的藝術(shù)字符串處理技巧掌握

    這篇文章主要為大家介紹了Python文本的藝術(shù)字符串處理技巧掌握,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • Python Selenium庫(kù)的基本使用教程

    Python Selenium庫(kù)的基本使用教程

    這篇文章主要給大家介紹了關(guān)于Python Selenium庫(kù)的基本使用教程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • django自帶的server 讓外網(wǎng)主機(jī)訪問(wèn)方法

    django自帶的server 讓外網(wǎng)主機(jī)訪問(wèn)方法

    今天小編就為大家分享一篇django自帶的server 讓外網(wǎng)主機(jī)訪問(wèn)方法。具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • Python爬取網(wǎng)站圖片并保存的實(shí)現(xiàn)示例

    Python爬取網(wǎng)站圖片并保存的實(shí)現(xiàn)示例

    這篇文章主要介紹了Python爬取網(wǎng)站圖片并保存的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02

最新評(píng)論

华蓥市| 灵川县| 德惠市| 湖南省| 翁牛特旗| 汝阳县| 香格里拉县| 屏边| 贵德县| 广西| 嘉黎县| 铜川市| 丰城市| 鄄城县| 蕲春县| 奉贤区| 喀喇沁旗| 峨山| 洛扎县| 包头市| 牡丹江市| 英超| 怀来县| 蓬安县| 板桥市| 无为县| 山阴县| 承德市| 建水县| 寿阳县| 沈丘县| 长宁区| 曲阜市| 南岸区| 张掖市| 肥乡县| 南京市| 洮南市| 义乌市| 平原县| 汪清县|