转载自:http://www.cnblogs.com/meitian/p/4607737.html

在做登录的post请求时,需要记住cookie,否则不能访问登录后的页面。

下面是登录的代码:

#coding:utf-8
import urllib
import http.cookiejar

url = "http://c.highpin.cn/Users/CLogin"
postdata =urllib.parse.urlencode({
"Logon_Password":"sunmin",
"Logon_PostCode":"fghc",
"Logon_RememberMe":"false",
"Logon_UserEmail":"sun121@qq.com"
}).encode('utf-8')
header = {
"Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Accept-Encoding":"utf-8",
"Accept-Language":"zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3",
"Connection":"keep-alive",
"Host":"c.highpin.cn",
"Referer":"http://c.highpin.cn/",
"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:32.0) Gecko/20100101 Firefox/32.0"
}
req = urllib.request.Request(url,postdata,header)
##print(urllib.request.urlopen(req).read().decode('utf-8'))

#自动记住cookie
cj = http.cookiejar.CookieJar()
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj))
r = opener.open(req)
print(r.read().decode('utf-8'))

以前用的是python2.7,但是python3开始很多包的位置和以前不一样了,就对这里用到的说明一下:

urllib2合并到了urllib下,urlopen使用时包的位置为urllib.request.urlopen,urlencode使用包位置为urllib.parse.urlencode

cookielib变更为了http.cookiejar

说明:带cookie的打印出来必须用opener.open(req).read().decode('utf-8')来发送的请求才会带上cookie,如果用urllib.request.urlopen()是不带cookie的

说明:
1.urllib.request.Request()返回了一个request的请求实例
2.urlopen是一个封装好的OpenerDirector实例,里面只有三个参数(url,data,timeout)
3.通过build_opener可以自己创建一个OpenerDirector实例,所以如果想要构建一个cookie管理
   build_opener(*handlers),将handler类实例化增加到OpenerDirector中,比如像上面的例子里增加cookie,
 
 
如果已知cookie内容,且要用这个固定cookie去发送请求,可以在header中直接添加cookie内容去发送请求,例子如下:
比如通过fiddle抓取请求包,看到请求和相应的raw格式,可以看到cookie(cookie属于header)。
import urllib
url = "http://h.highpin.cn/ManageJob/PubJobCompany?Length=9"
postdata=urllib.parse.urlencode({
"JobName":"测试工程师",
"YearlySalaryMin":"11",
"YearlySalaryMax":"12",
"X-Requested-With":"XMLHttpRequest",
"WorkExperienceMin":"-1",
"WorkExperienceMax":"-1",
"TabId":"0",
"SubordinateCount":"0",
"SaveType":"1",
"ReportObject":"测试人",
"RecruitCount":"1",
"QualifiCation":"信息描述",
"ProfessionalName":"",
"nowCurrentPageIndex":"0",
"Memo":"限500字",
"MasteryDegree":"1",
"MajorID":"-1",
"LanguageType":"-1",
"JobTypeID":"1050000,4000000,160000",
"JobTagCount":"8",
"JobStatus":"1",
"JobDescription":"职位描述",
"JobAllTagStr":"五险一金",
"IsViewHighEndUser":"false",
"IsFull":"true",
"FullTime":"false",
"DepName":"测试",
"Degree":"-1",
"CompanyID":"2234",
"CloseDate":"2016-01-12",
"AreaID":"530",
"AgeMin":"-1",
"AgeMax":"-1"
}).encode('utf-8')
header={
"Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Accept-Encoding":"utf-8",
"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0",
"Host":"h.highpin.cn",
"Content-Type":"application/x-www-form-urlencoded; charset=UTF-8",
"Referer":"http://h.highpin.cn/ManageJob/PubNewJob",
"Cookie":"XXXXX",
"Connection":"keep-alive"
}
req = urllib.request.Request(url,postdata,header)
r=urllib.request.urlopen(req)
print(r.read().decode('utf-8'))
说明:cookie中的内容我给替换掉了,放上自己的cookie就可以了
 

Python3和Python2的变更,可以参考文章:http://blog.csdn.net/samxx8/article/details/21535901

Python3发送post请求,自动记住cookie的更多相关文章

  1. Python3发送webservice请求

    Python3使用suds-jurko库来发送webservice接口请求 导入请求webservice接口需要用到的包 pip install suds-jurko 第一步:导入所需要的包 from ...

  2. postman发送HTTP请求自动生成MD5签名

    POSTMAN是常用的接口测试工具 如何进行MD5签名呢? 代码如下: /** * 通过request.data获取body的内容,这个是postman内置变量 * 常用内置参数如下: * reque ...

  3. Fiddler5 发送HTTP请求

    1.Fiddler Composer发送HTTP请求 Composer的编辑模式主要有2种:Parsed模式和Raw模式. 实例1:Composer发送get请求 实例2:Composer发送post ...

  4. 转 Fiddler5 发送HTTP请求

    Fiddler5 发送HTTP请求  文章转自:https://www.cnblogs.com/zhengna/p/10879573.html 1.Fiddler Composer发送HTTP请求 C ...

  5. iOS-WKWebView携带cookie发送http请求,cookie失效

    发送请求代码: NSString *testUrl = @"http://10.22.122.7:8081/test2_action/view_index"; NSURL *url ...

  6. fetch发送Form Data请求并携带cookie

    今天我们来说说如何fetch发送Form Data请求并携带cookie,直接进入正题好吧,别问我今天为啥不在开始吹两句了,累到一句牛逼不想吹...... 步骤1: 设置头部,"Conten ...

  7. 只要访问的地址匹配cookie的地址时候 发送request请求时候 会携带上该cookie

    只要访问的地址匹配cookie的地址时候 发送request请求时候 会携带上该cookie

  8. axios添加了header信息后发送的get请求自动编程option请求了

    axios添加了header信息后发送的get请求自动编程option请求了 webpack 代理转发 Provisional headers are shown 在Vue中如何使用axios跨域访问 ...

  9. C#实现通过HttpWebRequest发送POST请求实现网站自动登陆

    C#实现通过HttpWebRequest发送POST请求实现网站自动登陆   怎样通过HttpWebRequest 发送 POST 请求到一个网页服务器?例如编写个程序实现自动用户登录,自动提交表单数 ...

随机推荐

  1. 事件监听addEventListener()和removeEventListener() ---------1

    一直想写一个原生事件监听的记录,方便以后看,不愿意写主要是事件监听的单词太长,记起来好难记每次都要查,这次把知道的写完了,来这里查好了,以后要是理解的更透彻了,就再补全好了 首先,DOM0级事件和DO ...

  2. 转:python webdriver API 之浏览器多窗口处理

    有时候我们在测试一个 web 应用时会出现多个浏览器窗口的情况,在 selenium1.0 中这个问题比较难处理.webdriver 提供了相关相方法可以很轻松的在多个窗口之间切换并操作不同窗口上的元 ...

  3. Java基础(49):快速排序的Java封装(含原理,完整可运行,结合VisualGo网站更好理解)

    快速排序 对冒泡排序的一种改进,若初始记录序列按关键字有序或基本有序,蜕化为冒泡排序.使用的是递归原理,在所有同数量级O(n longn) 的排序方法中,其平均性能最好.就平均时间而言,是目前被认为最 ...

  4. java装饰者模式理解

    java 装饰者模式其实就是扩展子类的功能,和继承是一个性质. 但继承是在编译时就固定扩展了父类的一些功能,而装饰者模式是在运行过程中动态绑定对象,实现一个子类可以随时扩展功能. 将方法排列组合,也可 ...

  5. 基于fullpage的幻灯片播放

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="utf-8&quo ...

  6. Android小案例——简单图片浏览器

    今天上午休息看Android书,里面有个变化图片的示例引起了我的兴趣. 示例需求: 有N张图片,循环显示图片的内容.如果需求让我写我会使用一个变量count来保存显示图片数据的索引,图片显示时做个判断 ...

  7. [软件推荐]转换html到chm的软件,winchm pro

    之前使用teleport pro抓取过好几个网站的内容,网页文件都是在一个文件夹里,但是转换成chm格式的会方便一些. 用过一款软件叫easychm,是国人开发的.但是没注册的版本会在生成的文件中自动 ...

  8. RMQ(非log2储存方法)

    2016-03-31 RMQ 难度级别:B: 运行时间限制:1000ms: 运行空间限制:256000KB: 代码长度限制:2000000B 试题描述 长度为n的数列A,以及q个询问,每次询问一段区间 ...

  9. 鸟哥的linux私房菜学习记录之查看帮助文档

    如何使用man查看帮助文件 man command例如man date 按下enter键之后会显示date帮助文件,指令后面会有一个代号 info的用法 关机的几个常用命令 shutdown,halt ...

  10. 由于 add 运算符中“Chinese_PRC_CI_AS”和“Chinese_PRC_CS_AS_WS”之间的排序规则冲突

    有一个字段的排序规则是 Chinese_PRC_CS_AS_WS,字符串连接的时候报错. 处理方案 cast(columnName as varbinary) 即可