首頁  >  文章  >  後端開發  >  python模擬表單提交登入圖書館

python模擬表單提交登入圖書館

不言
不言原創
2018-04-27 11:16:432993瀏覽

這篇文章主要為大家詳細介紹了python模擬表單提交登入圖書館的實現方法,具有一定的參考價值,有興趣的小夥伴們可以參考一下

本文實例為大家分享了python模擬登入圖書館的具體程式碼,供大家參考,具體內容如下

模擬表單提交的原理:

我們都知道Http是無狀態的,所以當我們提交的資料和瀏覽器中正常提交一樣,那麼伺服器就會回傳和瀏覽器中一樣的回應。所以我們在這裡來模擬瀏覽器表單提交登入廣東工業大學的圖書館http://222.200.122.171:7771/login.aspx取得cookie,我們接下來造訪圖書館網站裡的其他頁面時就帶著這個cookie,伺服器會認為我是已經登入的使用者,回正常回傳資料給我。

首先我們先用瀏覽器查看頁面原始碼找到要提交的form表單:

#接下來我們要取得表單中的input 包含hidden,因為hidden也會跟著表單一起提交.找到帳號和密碼對應的name  到時候我們需要用自己的帳號填寫的.

取得到所有的要提交的表單內容後,將帳號和密碼替換成自己的帳號和密碼,提交請求.取得cookie並儲存在cookie中。

程式碼如下(Python2.7版本和Python3都其實都差不多):

# -*- coding:utf-8 -*- 
import urllib 
import urllib2 
import cookielib 
import bs4 
 
result = urllib2.urlopen("http://222.200.122.171:7771/login.aspx") 
soup = bs4.BeautifulSoup(result, "html.parser") 
 
loginp = soup.find("form", attrs={"name": "aspnetForm"}) 
Allinput = loginp.findAll("input") 
inputData = {} 
for oneinput in Allinput: 
 if oneinput.has_attr('name'): 
  if oneinput.has_attr('value'): 
   inputData[oneinput['name']] = oneinput['value'] 
  else: 
   inputData[oneinput['name']] = "" 
inputData['ctl00$ContentPlaceHolder1$txtPas_Lib'] = '*****' 
inputData['ctl00$ContentPlaceHolder1$txtUsername_Lib'] = '*******' 
 
filename = 'cookie.txt' 
# 声明一个MozillaCookieJar对象实例来保存cookie,之后写入文件 
cookie = cookielib.MozillaCookieJar(filename) 
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie)) 
postdata = urllib.urlencode(inputData) 
result2 = opener.open("http://222.200.122.171:7771/login.aspx", postdata) 
cookie.save(ignore_discard=True, ignore_expires=True) 
#登录后 要访问的url 
bookUrl = "http://222.200.122.171:7771/user/userinfo.aspx" 
result=opener.open(bookUrl) 
print result.read()

相關推薦:

######## ##python實現圖書館研習室自動預約功能############Python Requests模擬登入實現圖書館座位自動預約################ #######

以上是python模擬表單提交登入圖書館的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn