不登录打开网页:
import urllib2 request = urllib2.Request(‘http://www.baidu.com‘) response = urllib2.urlopen(request).read() print response
保存网页图片(https://www.baidu.com/img/bd_logo1.png):
picurl = ‘https://www.baidu.com/img/bd_logo1.png‘ #定义图片的url地址 req = urllib2.Request(picurl) data = urllib2.urlopen(req).read() file=open(‘d:\\zaa.jpg‘,‘wb‘) #将图片保存为名为zaa.jpg的图片 file.write(data) file.flush() file.close()
模拟自动登录zabbix:
import urllib2,cookielib,urllib #定义登录地址 login_url = ‘http://10.160.25.42/zabbix/index.php‘ #定义登录所需要用的信息,如用户名、密码等,详见下图,使用urllib进行编码 login_data = urllib.urlencode({ "name": ‘admin‘, "password": ‘password‘, "autologin": 1, "enter": "Sign in"}) #设置一个cookie处理器,它负责从服务器下载cookie到本地,并且在发送请求时带上本地的cookie cj = cookielib.CookieJar() #获取Cookiejar对象(存在本机的cookie消息) opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) #自定义opener,并将opener跟CookieJar对象绑定 urllib2.install_opener(opener) #安装opener,此后调用urlopen()时都会使用安装过的opener对象 response=opener.open(login_url,login_data).read() #访问登录页,自动带着cookie信息 print response #返回登陆后的页面源代码
zabbix登录页面内容:
有的页面登录时会post到其他页面,查看登录页面的form中的action地址,可能需要构造header头信息:
#发送头信息 headers = { ‘Referer‘:‘http://10.160.25.42/zabbix/index.php‘, ‘Host‘:‘10.160.25.42‘, #可以不要,一般两项就可以 ‘User-Agent‘:‘Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko‘ } #定义登录地址 login_url = ‘http://10.160.25.42/zabbix/index.php‘ #定义登录所需要用的信息,如用户名、密码等,使用urllib进行编码 login_data = urllib.urlencode({ "name": ‘admin‘, "password": ‘password‘, "autologin": 1, "enter": "Sign in"}) #设置一个cookie处理器,它负责从服务器下载cookie到本地,并且在发送请求时带上本地的cookie cj = cookielib.CookieJar() #获取Cookiejar对象(存在本机的cookie消息) opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) #自定义opener,并将opener跟CookieJar对象绑定 urllib2.install_opener(opener) #安装opener,此后调用urlopen()时都会使用安装过的opener对象 urllib2.urlopen(login_url)#打开登录主页面(他的目的是从页面下载cookie,这样我们在再送post数据时就有cookie了,否则发送不成功) #通过urllib2提供的request方法来向指定Url发送我们构造的数据,并完成登录过程 req=urllib2.Request(post_url,login_data,headers) #post_url需要在请求过程中自己得出 response=urllib2.urlopen(req)print response.read()response.close()
在ie中手动登录后,可以看到相应的header头信息,如下:
参考:http://www.2cto.com/kf/201401/275152.html 详细,带有http具体访问过程
http://www.jb51.net/article/63759.htm 简明
http://www.blogjava.net/hongqiang/archive/2012/08/01/384552.html
时间: 2024-09-30 02:08:39