python模擬表單提交登錄圖書(shū)館
本文實(shí)例為大家分享了python模擬登錄圖書(shū)館的具體代碼,供大家參考,具體內(nèi)容如下
模擬表單提交的原理:
我們都知道Http是無(wú)狀態(tài)的,所以當(dāng)我們提交的數(shù)據(jù)和瀏覽器中正常提交一樣,那么服務(wù)器就會(huì)返回和瀏覽器中一樣的響應(yīng)。所以我們這里來(lái)模擬瀏覽器表單提交登錄廣東工業(yè)大學(xué)的圖書(shū)館 http://222.200.122.171:7771/login.aspx,獲取cookie,我們接下來(lái)訪問(wèn)圖書(shū)館網(wǎng)站里的其他頁(yè)面時(shí)就帶上這個(gè)cookie,服務(wù)器會(huì)認(rèn)為我是已經(jīng)登錄的用戶,回正常返回?cái)?shù)據(jù)給我。
首先我們先用瀏覽器查看頁(yè)面源代碼找到要提交的form表單:
接下來(lái)我們要獲取表單中的input 包括hidden,因?yàn)閔idden也會(huì)跟著表單一起提交.找到賬號(hào)和密碼對(duì)應(yīng)的name 到時(shí)候我們需要用自己的賬號(hào)填寫(xiě)的.
獲取到所有的要提交的表單內(nèi)容后,將賬號(hào)和密碼替換成自己的賬號(hào)和密碼,提交請(qǐng)求.獲取cookie并保存在cookie中。
代碼如下(Python2.7版本 和Python3都其實(shí)都差不多):
# -*- 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") logindiv = soup.find("form", attrs={"name": "aspnetForm"}) Allinput = logindiv.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' # 聲明一個(gè)MozillaCookieJar對(duì)象實(shí)例來(lái)保存cookie,之后寫(xiě)入文件 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) #登錄后 要訪問(wèn)的url bookUrl = "http://222.200.122.171:7771/user/userinfo.aspx" result=opener.open(bookUrl) print result.read()
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python利用smtplib實(shí)現(xiàn)郵件發(fā)送
在當(dāng)今數(shù)字時(shí)代,電子郵件已成為我們生活和工作中不可或缺的一部分,本篇文章將為你講解如何在Python發(fā)送郵件,并為你提供實(shí)現(xiàn)的多種方式,希望對(duì)大家有所幫助2023-06-06各種Python庫(kù)安裝包下載地址與安裝過(guò)程詳細(xì)介紹(Windows版)
這篇文章主要介紹了Windows版的各種Python庫(kù)安裝包下載地址與安裝過(guò)程詳細(xì)介紹,本文給大家提供了windows版的各種Python庫(kù)安裝包下載地址等相關(guān)知識(shí),非常不錯(cuò)具有參考借鑒價(jià)值,需要的朋友可以參考下2016-11-11python 使用cx-freeze打包程序的實(shí)現(xiàn)
這篇文章主要介紹了python 使用cx-freeze打包程序的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-03-03Python aiohttp百萬(wàn)并發(fā)極限測(cè)試實(shí)例分析
這篇文章主要介紹了Python aiohttp百萬(wàn)并發(fā)極限測(cè)試,結(jié)合實(shí)例形式分析了Python異步編程基于aiohttp客戶端高并發(fā)請(qǐng)求的相關(guān)操作技巧與使用注意事項(xiàng),需要的朋友可以參考下2019-10-10Python簡(jiǎn)單網(wǎng)絡(luò)編程示例【客戶端與服務(wù)端】
這篇文章主要介紹了Python簡(jiǎn)單網(wǎng)絡(luò)編程,詳細(xì)介紹了客戶端與服務(wù)端的具體實(shí)現(xiàn)技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下2017-05-05