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实现下载文件的三种方法
Feb 09 Python
解读! Python在人工智能中的作用
Nov 14 Python
Python 实现淘宝秒杀的示例代码
Jan 02 Python
对Python的多进程锁的使用方法详解
Feb 18 Python
python实现矩阵打印
Mar 02 Python
Python参数解析模块sys、getopt、argparse使用与对比分析
Apr 02 Python
Python测试模块doctest使用解析
Aug 10 Python
Python实现自定义读写分离代码实例
Nov 16 Python
pip 20.3 新版本发布!即将抛弃 Python 2.x(推荐)
Dec 16 Python
python 利用panda 实现列联表(交叉表)
Feb 06 Python
python实现三阶魔方还原的示例代码
Apr 28 Python
Python基础 括号()[]{}的详解
Nov 07 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传输数据的代码
2007/11/13 PHP
PHP大文件分割上传 PHP分片上传
2017/08/28 PHP
laravel 5.5 关闭token的3种实现方式
2019/10/24 PHP
发现的以前不知道的函数
2006/09/19 Javascript
jQuery实现页面滚动时层智能浮动定位实例探讨
2013/03/29 Javascript
防止jQuery ajax Load使用缓存的方法小结
2014/02/22 Javascript
使用typeof判断function是否存在于上下文
2014/08/14 Javascript
分享一则javascript 调试技巧
2015/01/02 Javascript
简化版手机端照片预览组件
2015/04/13 Javascript
jquery不常用方法汇总
2015/07/26 Javascript
js仿百度登录页实现拖动窗口效果
2016/03/11 Javascript
原生js实现addClass,removeClass,hasClass方法
2016/04/27 Javascript
微信小程序使用modal组件弹出对话框功能示例
2017/11/29 Javascript
nodejs使用http模块发送get与post请求的方法示例
2018/01/08 NodeJs
Vue 实现树形视图数据功能
2018/05/07 Javascript
详解webpack import()动态加载模块踩坑
2018/07/17 Javascript
node.js使用stream模块实现自定义流示例
2020/02/13 Javascript
js实现省级联动(数据结构优化)
2020/07/17 Javascript
vue内置组件component--通过is属性动态渲染组件操作
2020/07/28 Javascript
微信小程序:报错(in promise) MiniProgramError
2020/10/30 Javascript
Linux上安装Python的PIL和Pillow库处理图片的实例教程
2016/06/23 Python
Python字典简介以及用法详解
2016/11/15 Python
centos6.7安装python2.7.11的具体方法
2017/01/16 Python
python简单图片操作:打开\显示\保存图像方法介绍
2017/11/23 Python
python决策树之C4.5算法详解
2017/12/20 Python
Python使用functools实现注解同步方法
2018/02/06 Python
pip安装py_zipkin时提示的SSL问题对应
2018/12/29 Python
结合OpenCV与TensorFlow进行人脸识别的实现
2019/10/10 Python
ORACLE第二个十问
2013/12/14 面试题
踏青活动策划方案
2014/08/19 职场文书
政法干警核心价值观心得体会
2014/09/11 职场文书
2014年四风问题自我剖析材料
2014/09/15 职场文书
乡镇群众路线教育实践活动整改措施
2014/10/04 职场文书
青岛海底世界导游词
2015/02/11 职场文书
工作调动申请报告
2015/05/18 职场文书
python flask框架快速入门
2021/05/14 Python