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使用mysqldb连接数据库操作方法示例详解
Dec 03 Python
详解Swift中属性的声明与作用
Jun 30 Python
Python实现中文数字转换为阿拉伯数字的方法示例
May 26 Python
python中实现指定时间调用函数示例代码
Sep 08 Python
Python PyQt4实现QQ抽屉效果
Apr 20 Python
Python3.5局部变量与全局变量作用域实例分析
Apr 30 Python
详解Django CAS 解决方案
Oct 30 Python
Pycharm最新激活码2019(推荐)
Dec 31 Python
sklearn+python:线性回归案例
Feb 24 Python
python实现梯度下降法
Mar 24 Python
在django中form的label和verbose name的区别说明
May 20 Python
教你用python实现12306余票查询
Jun 30 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
德生BCL3000的电路分析和打磨
2021/03/02 无线电
php伪静态之APACHE篇
2014/06/02 PHP
详解PHP对象的串行化与反串行化
2016/01/24 PHP
php在windows环境下获得cpu内存实时使用率(推荐)
2018/02/08 PHP
js简单实现让文本框内容逐个字的显示出来
2013/10/22 Javascript
node.js中的fs.close方法使用说明
2014/12/17 Javascript
JS实现控制表格行文本对齐的方法
2015/03/30 Javascript
JavaScript实现将数组中所有元素连接成一个字符串的方法
2015/04/06 Javascript
JavaScript使表单中的内容显示在屏幕上的方法
2015/06/29 Javascript
深入php面向对象、模式与实践
2016/02/16 Javascript
javascript实现下雪效果【实例代码】
2016/05/03 Javascript
JS异步文件上传(兼容IE8+)
2017/04/02 Javascript
详解vue axios中文文档
2017/09/12 Javascript
jQuery EasyUI 折叠面板accordion的使用实例(分享)
2017/12/25 jQuery
Vue-CLI 3.X 部署项目至生产服务器的方法
2019/03/22 Javascript
jquery实现抽奖功能
2020/10/22 jQuery
浅谈Python的垃圾回收机制
2016/12/17 Python
Python之reload流程实例代码解析
2018/01/29 Python
python opencv之分水岭算法示例
2018/02/24 Python
Python基于opencv调用摄像头获取个人图片的实现方法
2019/02/21 Python
详解利用python+opencv识别图片中的圆形(霍夫变换)
2019/07/01 Python
Django使用中间键实现csrf认证详解
2019/07/22 Python
浅谈keras中的后端backend及其相关函数(K.prod,K.cast)
2020/06/29 Python
python操作redis数据库的三种方法
2020/09/10 Python
Django 权限管理(permissions)与用户组(group)详解
2020/11/30 Python
html5音频_动力节点Java学院整理
2018/08/22 HTML / CSS
Kathmandu美国网站:新西兰户外运动品牌
2019/03/23 全球购物
英国现代市场:ARKET
2019/04/10 全球购物
贪睡宠物用品:Snoozer Pet Products
2020/02/04 全球购物
医院护理人员的自我评价分享
2013/10/04 职场文书
中国梦演讲稿教师篇
2014/04/23 职场文书
公司业务员管理制度
2015/08/05 职场文书
2016国庆促销广告语
2016/01/28 职场文书
晶体管单管来复再生式收音机
2021/04/22 无线电
Java常用工具类汇总 附示例代码
2021/06/26 Java/Android
JS中如何优雅的使用async await详解
2021/10/05 Javascript