Python实现模拟浏览器请求及会话保持操作示例


Posted in Python onJuly 30, 2018

本文实例讲述了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实现模拟浏览器请求及会话保持操作示例

在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': '2011411111',
 'upw': '124569',
 '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 Socket编程技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python BeautifulSoup设置页面编码的方法
Apr 03 Python
Python OS模块常用函数说明
May 23 Python
一步步解析Python斗牛游戏的概率
Feb 12 Python
玩转python爬虫之爬取糗事百科段子
Feb 17 Python
python利用lxml读写xml格式的文件
Aug 10 Python
python实现简易版计算器
Jun 22 Python
python 接口测试response返回数据对比的方法
Feb 11 Python
总结Python图形用户界面和游戏开发知识点
May 22 Python
Django 多表关联 存储 使用方法详解 ManyToManyField save
Aug 09 Python
pytorch 实现在预训练模型的 input上增减通道
Jan 06 Python
django inspectdb 操作已有数据库数据的使用步骤
Feb 07 Python
pytorch中的model=model.to(device)使用说明
May 24 Python
tensorflow 打印内存中的变量方法
Jul 30 #Python
Python实现的多叉树寻找最短路径算法示例
Jul 30 #Python
tensorflow: variable的值与variable.read_value()的值区别详解
Jul 30 #Python
Tensorflow 实现修改张量特定元素的值方法
Jul 30 #Python
python用BeautifulSoup库简单爬虫实例分析
Jul 30 #Python
对TensorFlow的assign赋值用法详解
Jul 30 #Python
Python双向循环链表实现方法分析
Jul 30 #Python
You might like
php中curl和file_get_content的区别
2014/05/10 PHP
Yii框架通过请求组件处理get,post请求的方法分析
2019/09/03 PHP
基于PHP的登录和注册的功能的实现
2020/08/06 PHP
javascript高级学习笔记整理
2011/08/14 Javascript
JQuery实现鼠标滑过显示导航下拉列表
2013/09/12 Javascript
eclipse导入jquery包后报错的解决方法
2014/02/17 Javascript
node.js require() 源码解读
2015/12/13 Javascript
javascript作用域、作用域链(菜鸟必看)
2016/06/16 Javascript
用nodejs的实现原理和搭建服务器(动态)
2016/08/10 NodeJs
VUE JS 使用组件实现双向绑定的示例代码
2017/01/10 Javascript
canvas实现绘制吃豆鱼效果
2017/01/12 Javascript
JS判断键盘是否按的回车键并触发指定按钮点击操作的方法
2017/02/13 Javascript
原生JavaScript实现精美的淘宝轮播图效果示例【附demo源码下载】
2017/05/27 Javascript
IntersectionObserver实现图片懒加载的示例
2017/09/29 Javascript
vue拦截器实现统一token,并兼容IE9验证功能
2018/04/26 Javascript
基于webpack4搭建的react项目框架的方法
2018/06/30 Javascript
vue3.0封装轮播图组件的步骤
2021/03/04 Vue.js
Python引用模块和查找模块路径
2016/03/17 Python
解读python logging模块的使用方法
2018/04/17 Python
Linux下python3.6.1环境配置教程
2018/09/26 Python
python实现二级登陆菜单及安装过程
2019/06/21 Python
pymysql的简单封装代码实例
2020/01/08 Python
python Yaml、Json、Dict之间的转化
2020/10/19 Python
CSS3田字格列表的样式编写方法
2018/11/22 HTML / CSS
HTML5的语法变化介绍
2013/08/13 HTML / CSS
凯蒂·佩里个人女鞋品牌:Katy Perry Collections
2019/04/04 全球购物
技术人员面试提纲
2013/11/28 职场文书
音乐教学随笔感言
2014/02/19 职场文书
城市精细化管理实施方案
2014/03/04 职场文书
《大禹治水》教学反思
2014/04/27 职场文书
会计电算化实训报告
2014/11/04 职场文书
小班下学期幼儿评语
2014/12/30 职场文书
拾金不昧感谢信范文
2015/01/21 职场文书
2015年采购部工作总结
2015/04/23 职场文书
教育读书笔记
2015/07/02 职场文书
班主任寄语2016
2015/12/04 职场文书