python_程序模拟浏览器请求及会话保持
python下读取一个页面的数据可以通过urllib2轻松实现请求
import urllib2
print urllib2.urlopen('http://www.baidu.com').read()
涉及到页面的POST请求操作的话需要提供头信息,提交的post数据和请求页面。
其中的post数据需要urllib.encode()一下,其实就是将字典转换成“data1=value1&data2=value2”的格式。
import urllib
import urllib2 HEADER = {
'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0',
'Referer' : 'http://202.206.1.163/logout.do'
} POSTDATA = {
'data1': 'value1',
'data2': 'value2'
} HOSTURL = 'http://xxx.com' enpostdata = urllib.urlencode(POSTDATA)
urlrequest = urllib2.Request(hosturl,enpostdata,HEADER)
urlresponse = urllib2.urlopen(urlrequest) print urlresponse.read()
请求之后浏览器会有一个会话保持的过程,会话都是保存在一个cookie里面的,下一次页面的请求会把cookie放到请求头,如果cookie丢失会话也就断开了。
在python下面需要设置一下cookie的保持
# cookie set
# 用来保持会话
cj = cookielib.LWPCookieJar()
cookie_support = urllib2.HTTPCookieProcessor(cj)
opener = urllib2.build_opener(cookie_support, urllib2.HTTPHandler)
urllib2.install_opener(opener)
下面是将以上知识点汇总写的一个库文件,方便使用:
# filename: analogop.py
#!/usr/bin/python
# -*-coding:UTF-8 -*- # author: 初行
# qq: 121866673
# mail: zxbd1016@163.com
# message: I need a python job
# time: 2014/10/5 import urllib
import urllib2
import cookielib # cookie set
# 用来保持会话
cj = cookielib.LWPCookieJar()
cookie_support = urllib2.HTTPCookieProcessor(cj)
opener = urllib2.build_opener(cookie_support, urllib2.HTTPHandler)
urllib2.install_opener(opener) # default header
HEADER = {
'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0',
'Referer' : 'http://202.206.1.163/logout.do'
} # operate method
def geturlopen(hosturl, postdata = {}, headers = HEADER):
# encode postdata
enpostdata = urllib.urlencode(postdata)
# request url
urlrequest = urllib2.Request(hosturl, enpostdata, headers)
# open url
urlresponse = urllib2.urlopen(urlrequest)
# return url
return urlresponse
这个是测试文件,因为读者没有测试环境,需要自己搭建或者找个网站测试:
#filename: test.py
from analogop import geturlopen postd = {
'usernum': '',
'upw': '',
'userip': '192.168.10.1',
'token': 'xxx'
} urlread = geturlopen('http://127.0.0.1:8000/login/', postd)
print urlread.read().decode('utf-8')
urlread = geturlopen('http://127.0.0.1:8000/chafen/', {})
print urlread.read().decode('utf-8')
python_程序模拟浏览器请求及会话保持的更多相关文章
- 程序模拟浏览器请求及会话保持-python实现
http://www.cnblogs.com/zxlovenet/p/4006649.html
- requests模拟浏览器请求模块初识
requests模拟浏览器请求模块初识 一.下载 requests模拟浏览器请求模块属于第三方模块 源码下载地址http://docs.python-requests.org/zh_CN/lates ...
- 第五十九节,模拟浏览器请求Python结合html基本格式
模拟浏览器请求Python结合html基本格式 用Python模拟一个客户端,结合打开一个HTML页面 创建客户端 #!/usr/bin/env python # -*- coding:utf8 -* ...
- 第四十节,requests模拟浏览器请求模块初识
requests模拟浏览器请求模块初识 requests模拟浏览器请求模块属于第三方模块 源码下载地址http://docs.python-requests.org/zh_CN/latest/use ...
- python入门常用方法(转json,模拟浏览器请求头,写入文件)
转json import jsonjson = json.loads(html) 模拟浏览器请求头 import urllib.request req = urllib.request.Request ...
- 关于HttpClient模拟浏览器请求的參数乱码问题解决方式
转载请注明出处:http://blog.csdn.net/xiaojimanman/article/details/44407297 http://www.llwjy.com/blogdetail/9 ...
- java 接口中模拟浏览器 请求webservice 接受返回数据
使用HttpClient 所需jar:commons-codec-1.9.jar,commons-httpclient-3.1.jar try { HttpClient client = new Ht ...
- java后台调用HttpURLConnection类模拟浏览器请求(一般用于接口调用)
项目开发中难免遇到外部接口的调用,小生今天初次接触该类,跟着API方法走了一遍,如有不对的地方,还请哆哆指正,拜谢! 1 package com.cplatform.movie.back.test; ...
- 程序模拟HTTP请求
1. 使用HttpClient 前面拼接StringContent string strContent = "client_id=client&client_secret=secre ...
随机推荐
- 多媒体文件格式之MP4
[时间:2016-06] [状态:Open] 学习多媒体容器格式的目的 主要是为了回答以下问题: 该容器中数据是如何组织的? 该容器包含哪些编码格式的数据?这些数据是如何存储的? 该容器包含哪些元数据 ...
- Jackson 时间格式化,时间注解 @JsonFormat 用法、时差问题说明
https://www.sojson.com/blog/246.html ******************************************** Jackson 是 Spring ...
- R语言统计分析应用与SAS、SPSS的比较
能够用来做统计分析的软件和程序很多,目前应用比较广泛的包括:SPSS, SAS.R语言,Matlab,S-PLUS,S-Miner等.下面我们来看一下各应用的特点: SPSS: 最简单的,都是菜单操作 ...
- JAVA-JSP内置对象之request获得所有的参数名称
相关资料:<21天学通Java Web开发> 获得所有的参数名称1.request对象的getParameterNames()方法可以获得所有的参数名称. RequestForm2.jsp ...
- iOS 导航栏返回到指定页面的方法和理解
关于ios中 viewcontroller的跳转问题,其中有一种方式是采用navigationController pushViewController 的方法,比如我从主页面跳转到了一级页面,又从一 ...
- C#中的索引器
在Java中,一般会这样使用get,set方法: class Person{ private String name; public void setName(String name){ this.n ...
- Hbase 学习(五) 调优
1.垃圾回收器调优 当我们往hbase写入数据,它首先写入memstore当中,当menstore的值大于hbase.hregion.memstore.flush.size参数中设置的值后,就会写入硬 ...
- Swift的函数与函数指针、闭包Closure等相关内容介绍
<span style="font-size:24px;">//函数 //demo1 无參数类型 func testConcat(){ println("測试 ...
- Android开发,在Fragment中,隐藏或关闭软键盘(虚拟键盘)的方法
网上可以搜到各种方法,实际测试中,我的开发用机中,仅仅下面这个方法有效,记录一下. //隐藏虚拟键盘 public static void HideKeyboard(View v) ...
- 【oneday_onepage】——The Secret Of Steve<1>
The Secret Of SteveThe secret of Steve is simple. It explains his success and excess. It exemplifies ...