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输出当前目录下index.html文件路径的方法
Apr 28 Python
实例解析Python的Twisted框架中Deferred对象的用法
May 25 Python
Python的Django框架中使用SQLAlchemy操作数据库的教程
Jun 02 Python
在Python web中实现验证码图片代码分享
Nov 09 Python
python 将日期戳(五位数时间)转换为标准时间
Jul 11 Python
Django 请求Request的具体使用方法
Nov 11 Python
Python进程间通信multiprocess代码实例
Mar 18 Python
Python 给下载文件显示进度条和下载时间的实现
Apr 02 Python
pip安装提示Twisted错误问题(Python3.6.4安装Twisted错误)
May 09 Python
python 获取字典特定值对应的键的实现
Sep 29 Python
python 怎样进行内存管理
Nov 10 Python
python b站视频下载的五种版本
May 27 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
星际争霸 Starcraft 游戏介绍
2020/03/14 星际争霸
比较简单的百度网盘文件直链PHP代码
2013/03/24 PHP
PHP无限分类(树形类)
2013/09/28 PHP
PHP有序表查找之二分查找(折半查找)算法示例
2018/02/09 PHP
PHP 布尔值的自增与自减的实现方法
2018/05/03 PHP
13 个JavaScript 性能提升技巧分享
2012/07/26 Javascript
jQuery圆形统计图开发实例
2015/01/04 Javascript
Css3制作变形与动画效果
2015/07/24 Javascript
window.setInterval()方法的定义和用法及offsetLeft与style.left的区别
2015/11/11 Javascript
JavaScript编写检测用户所使用的浏览器的代码示例
2016/05/05 Javascript
JavaScript实现url参数转成json形式
2016/09/25 Javascript
AngularJS深入探讨scope,继承结构,事件系统和生命周期
2016/11/02 Javascript
基于 Bootstrap Datetimepicker 联动
2017/08/03 Javascript
vue项目引入字体.ttf的方法
2018/09/28 Javascript
微信小程序自定义组件components(代码详解)
2019/10/21 Javascript
js实现多个标题吸顶效果
2020/01/08 Javascript
[02:46]2014DOTA2国际邀请赛 选手为你解读比赛MVP充满梦想
2014/07/09 DOTA
深入理解Python 代码优化详解
2014/10/27 Python
python函数形参用法实例分析
2015/08/04 Python
Python实现将照片变成卡通图片的方法【基于opencv】
2018/01/17 Python
基于python OpenCV实现动态人脸检测
2018/05/25 Python
python去重,一个由dict组成的list的去重示例
2019/01/21 Python
Django保护敏感信息的方法示例
2019/05/09 Python
python程序运行进程、使用时间、剩余时间显示功能的实现代码
2019/07/11 Python
django搭建项目配置环境和创建表过程详解
2019/07/22 Python
Python数据库小程序源代码
2019/09/15 Python
python通过移动端访问查看电脑界面
2020/01/06 Python
在keras中获取某一层上的feature map实例
2020/01/24 Python
python实现坦克大战
2020/04/24 Python
ProBikeKit澳大利亚:自行车套件,跑步和铁人三项装备
2016/11/30 全球购物
运动鞋、街头服装、手表和手袋的实时市场:StockX
2020/11/25 全球购物
北京银河万佳Java面试题
2012/03/21 面试题
2014年作风建设心得体会
2014/10/22 职场文书
个园导游词
2015/02/04 职场文书
2019公司管理制度
2019/04/19 职场文书
微信小程序和php的登录实现
2021/04/01 PHP