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判断字符串是否包含子字符串的方法
Mar 24 Python
Python实现将不规范的英文名字首字母大写
Nov 15 Python
MySQL适配器PyMySQL详解
Sep 20 Python
Python numpy 常用函数总结
Dec 07 Python
win10下python3.5.2和tensorflow安装环境搭建教程
Sep 19 Python
详解Python3 基本数据类型
Apr 19 Python
django drf框架中的user验证以及JWT拓展的介绍
Aug 12 Python
Python之Django自动实现html代码(下拉框,数据选择)
Mar 13 Python
Python基于os.environ从windows获取环境变量
Jun 09 Python
基于matplotlib中ion()和ioff()的使用详解
Jun 16 Python
python修改微信和支付宝步数的示例代码
Oct 12 Python
python实现简单区块链结构
Apr 25 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
生成sessionid和随机密码的例子
2006/10/09 PHP
PHP中的使用curl发送请求(GET请求和POST请求)
2017/02/08 PHP
PHP实现Redis单据锁以及防止并发重复写入
2018/04/10 PHP
用js实现键盘方向键翻页功能的代码
2007/06/03 Javascript
js各种验证文本框输入格式(正则表达式)
2010/10/22 Javascript
jQuery代码优化 遍历篇
2011/11/01 Javascript
js中通过split函数分割字符串成数组小例子
2013/09/21 Javascript
JS对象转换为Jquery对象示例
2014/01/26 Javascript
JQuery悬停控制图片轮播——代码简单
2015/08/05 Javascript
jquery调整表格行tr上下顺序实例讲解
2016/01/09 Javascript
JavaScript+html5 canvas制作的百花齐放效果完整实例
2016/01/26 Javascript
原生js编写autoComplete插件
2016/04/13 Javascript
前端框架Vue.js构建大型应用浅析
2016/09/12 Javascript
jQuery实现弹出窗口弹出div层的实例代码
2017/01/09 Javascript
jquery平滑滚动到顶部插件使用详解
2017/05/08 jQuery
vue2.0中click点击当前li实现动态切换class
2017/06/21 Javascript
JavaScript实现的可变动态数字键盘控件方式实例代码
2017/07/15 Javascript
Popup弹出框添加数据实现方法
2017/10/27 Javascript
javascript将非数值转换为数值
2018/09/13 Javascript
angularJS1 url中携带参数的获取方法
2018/10/09 Javascript
自定义Vue中的v-module双向绑定的实现
2019/04/17 Javascript
Python使用xlrd模块操作Excel数据导入的方法
2015/05/26 Python
Python获取邮件地址的方法
2015/07/10 Python
python2.7到3.x迁移指南
2018/02/01 Python
对python模块中多个类的用法详解
2019/01/10 Python
搞清楚 Python traceback的具体使用方法
2019/05/13 Python
使用pyshp包进行shapefile文件修改的例子
2019/12/06 Python
Python GUI编程学习笔记之tkinter界面布局显示详解
2020/03/30 Python
详解Python模块化编程与装饰器
2021/01/16 Python
CSS3制作日历实现代码
2012/01/21 HTML / CSS
HTML5 DeviceOrientation实现手机网站摇一摇功能代码实例
2015/04/24 HTML / CSS
迪卡侬中国官网:Decathlon中国
2020/08/10 全球购物
前台接待的工作职责
2013/11/21 职场文书
大学自荐信
2013/12/12 职场文书
周鸿祎:教你写创业计划书
2013/12/30 职场文书
英语自我评价范文
2014/01/24 职场文书