欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

腳本功能

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

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

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

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

實(shí)現(xiàn)

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

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

優(yōu)化

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

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

代碼

(為了不給學(xué)校系統(tǒng)添加負(fù)擔(dān),代碼僅供參考,無法直接運(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é)號(必填)
	 -p 密碼
	 -s 座位id
	 -b 開始時(shí)間,格式13:00,下同
	 -e 結(jié)束時(shí)間
	''')
 
if __name__ == '__main__':
 id = pwd = None
 #不填默認(rèn)搶這個這個時(shí)間段的這個座位
 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),開始搶座
 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ù)約,搶下一個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é)語

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

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

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

相關(guān)文章

  • Python 兩個列表的差集、并集和交集實(shí)現(xiàn)代碼

    Python 兩個列表的差集、并集和交集實(shí)現(xiàn)代碼

    這篇文章主要介紹了Python 兩個列表的差集、并集和交集實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2016-09-09
  • 關(guān)于jupyter lab安裝及導(dǎo)入tensorflow找不到模塊的問題

    關(guān)于jupyter lab安裝及導(dǎo)入tensorflow找不到模塊的問題

    這篇文章主要介紹了關(guān)于jupyter lab安裝及導(dǎo)入tensorflow找不到模塊的問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • python二叉樹類以及其4種遍歷方法實(shí)例

    python二叉樹類以及其4種遍歷方法實(shí)例

    二叉樹是一種特殊的樹,最直觀地體現(xiàn)于它的每個節(jié)點(diǎn)至多有兩個子節(jié)點(diǎn),二叉樹是非常實(shí)用的一種數(shù)據(jù)結(jié)構(gòu),常常用于實(shí)現(xiàn)二叉查找樹及二叉堆等,下面這篇文章主要給大家介紹了關(guān)于python二叉樹類以及其4種遍歷方法的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • python中通過Django捕獲所有異常的處理

    python中通過Django捕獲所有異常的處理

    誠然,每個人都會寫bug,程序拋異常是一件很正常的事;既然異常總是會拋,那就想辦法在拋出后,盡早解決才是王道。不能老是等待用戶反饋異常和問題,萬一用戶懶得反饋了,豈不很尷尬
    2021-09-09
  • Python機(jī)器學(xué)習(xí)之scikit-learn庫中KNN算法的封裝與使用方法

    Python機(jī)器學(xué)習(xí)之scikit-learn庫中KNN算法的封裝與使用方法

    這篇文章主要介紹了Python機(jī)器學(xué)習(xí)之scikit-learn庫中KNN算法的封裝與使用方法,結(jié)合實(shí)例形式分析了scikit-learn庫中KNN算法的相關(guān)調(diào)用與使用技巧,需要的朋友可以參考下
    2018-12-12
  • 基于Python實(shí)現(xiàn)超級瑪麗游戲的示例代碼

    基于Python實(shí)現(xiàn)超級瑪麗游戲的示例代碼

    這篇文章主要介紹了利用python實(shí)現(xiàn)超級瑪麗游戲的示例代碼,幫助大家更好的理解和使用python開發(fā)游戲,感興趣的朋友可以跟隨小編一起學(xué)習(xí)一下
    2022-05-05
  • 讓Python程序定時(shí)執(zhí)行的8種方法整理

    讓Python程序定時(shí)執(zhí)行的8種方法整理

    在日常工作中,我們常常會用到需要周期性執(zhí)行的任務(wù),一種方式是采用?Linux?系統(tǒng)自帶的?crond?結(jié)合命令行實(shí)現(xiàn),另外一種方式是直接使用Python。本文整理了一下?Python?定時(shí)任務(wù)的實(shí)現(xiàn)方式,希望對大家有所幫助
    2023-01-01
  • 教你用Python讀取CSV文件的5種方式

    教你用Python讀取CSV文件的5種方式

    一個股票的數(shù)據(jù)集,其實(shí)就是常見的表格數(shù)據(jù),有自己的頭部和身體,這篇文章主要介紹了用Python讀取CSV文件的5種方式,通過五招給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2021-11-11
  • Python yield生成器和return對比代碼實(shí)例

    Python yield生成器和return對比代碼實(shí)例

    這篇文章主要介紹了Python yield生成器和return對比代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • VScode連接遠(yuǎn)程服務(wù)器上的jupyter notebook的實(shí)現(xiàn)

    VScode連接遠(yuǎn)程服務(wù)器上的jupyter notebook的實(shí)現(xiàn)

    這篇文章主要介紹了VScode連接遠(yuǎn)程服務(wù)器上的jupyter notebook的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04

最新評論