本文实例为大家分享了python模拟登录图书馆的具体代码,供大家参考,具体内容如下
模拟表单提交的原理:
我们都知道http是无状态的,所以当我们提交的数据和浏览器中正常提交一样,那么服务器就会返回和浏览器中一样的响应。所以我们这里来模拟浏览器表单提交登录广东工业大学的图书馆 http://222.200.122.171:7771/login.aspx,获取cookie,我们接下来访问图书馆网站里的其他页面时就带上这个cookie,服务器会认为我是已经登录的用户,回正常返回数据给我。
首先我们先用浏览器查看页面源代码找到要提交的form表单:
接下来我们要获取表单中的input 包括hidden,因为hidden也会跟着表单一起提交.找到账号和密码对应的name 到时候我们需要用自己的账号填写的.
获取到所有的要提交的表单内容后,将账号和密码替换成自己的账号和密码,提交请求.获取cookie并保存在cookie中。
代码如下(python2.7版本 和python3都其实都差不多):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
# -*- 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' # 声明一个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() |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/u013243986/article/details/51669553