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實(shí)現(xiàn)
非極大值抑制(Non-Maximum Suppression,NMS),顧名思義就是抑制不是極大值的元素,可以理解為局部最大搜索。這個(gè)局部代表的是一個(gè)鄰域,鄰域有兩個(gè)參數(shù)可變,一是鄰域的維數(shù),二是鄰域的大小2021-06-06
Python如何快速上手? 快速掌握一門新語(yǔ)言的方法
Python如何快速上手? 這篇文章主要為大家詳細(xì)介紹了快速掌握一門新語(yǔ)言的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-11-11
Django Form設(shè)置文本框?yàn)閞eadonly操作
這篇文章主要介紹了Django Form設(shè)置文本框?yàn)閞eadonly操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-07-07
Python實(shí)現(xiàn)調(diào)用達(dá)夢(mèng)數(shù)據(jù)庫(kù)的教程分享
這篇文章主要為大家詳細(xì)介紹了Python是如何調(diào)用達(dá)夢(mèng)數(shù)據(jù)庫(kù)的,文中的示例代碼簡(jiǎn)潔易懂,具有一定的學(xué)習(xí)和參考價(jià)值,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-06-06
利用Python實(shí)現(xiàn)批量下載上市公司財(cái)務(wù)報(bào)表
這篇文章主要為大家介紹了如何利用Python做個(gè)小工具,可以批量把某網(wǎng)站上的上市公司的財(cái)報(bào)下下來(lái)。文中的示例代碼講解詳細(xì),感興趣的可以動(dòng)手試一試2022-03-03

