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中实现贪婪排名算法的教程
Apr 17 Python
python实现批量图片格式转换
Jun 16 Python
pycharm运行出现ImportError:No module named的解决方法
Oct 13 Python
python使用if语句实现一个猜拳游戏详解
Aug 27 Python
使用Python完成15位18位身份证的互转功能
Nov 06 Python
Python3常用内置方法代码实例
Nov 18 Python
Python post请求实现代码实例
Feb 28 Python
python 安装库几种方法之cmd,anaconda,pycharm详解
Apr 08 Python
如何基于Python Matplotlib实现网格动画
Jul 20 Python
python获取时间戳的实现示例(10位和13位)
Sep 23 Python
详解Python遍历列表时删除元素的正确做法
Jan 07 Python
解决pycharm不能自动保存在远程linux中的问题
Feb 06 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实现图片简单上传
2006/10/09 PHP
Maps Javascript
2007/01/22 Javascript
javascript qq右下角滑出窗口 sheyMsg
2010/03/21 Javascript
关于onScroll事件在IE6下每次滚动触发三次bug说明
2011/09/21 Javascript
解析jquery获取父窗口的元素
2013/06/26 Javascript
Js判断CSS文件加载完毕的具体实现
2014/01/17 Javascript
jquery使用each方法遍历json格式数据实例
2015/05/18 Javascript
如何使用jQuery技术开发ios风格的页面导航菜单
2015/07/29 Javascript
使用jquery动态加载Js文件和Css文件
2015/10/24 Javascript
轻松实现Bootstrap图片轮播
2020/04/20 Javascript
微信小程序开发的四十个技术窍门总结(推荐)
2017/01/23 Javascript
原生javascript上传图片带进度条【实例分享】
2017/04/06 Javascript
es6中的解构赋值、扩展运算符和rest参数使用详解
2017/09/28 Javascript
JavaScript实现求最大公共子串的方法
2018/02/03 Javascript
vue组件name的作用小结
2018/05/23 Javascript
Nodejs异步回调之异常处理实例分析
2018/06/22 NodeJs
axios全局注册,设置token,以及全局设置url请求网段的方法
2018/09/25 Javascript
vue实现的封装全局filter并统一管理操作示例
2020/02/02 Javascript
openlayers实现地图测距测面
2020/09/25 Javascript
在antd Form表单中select设置初始值操作
2020/11/02 Javascript
[06:33]3.19 DOTA2发布会 海涛、冷冷、2009见证希望
2014/03/21 DOTA
python实现红包裂变算法
2016/02/16 Python
详解Python中的__getitem__方法与slice对象的切片操作
2016/06/27 Python
Python加密方法小结【md5,base64,sha1】
2017/07/13 Python
详解python中的线程
2018/02/10 Python
python计算n的阶乘的方法代码
2019/10/25 Python
python topk()函数求最大和最小值实例
2020/04/02 Python
英国比较机场停车场网站:Airport Parking Essentials
2019/12/01 全球购物
建材业务员岗位职责
2013/12/08 职场文书
保险公司年会主持词
2014/03/22 职场文书
主持人开场白台词
2015/05/29 职场文书
董事长助理工作总结2015
2015/07/23 职场文书
幼儿园2016圣诞节活动总结
2016/03/31 职场文书
浅谈pytorch中的dropout的概率p
2021/05/27 Python
Django框架模板用法详解
2022/06/10 Python
Redis配置外网可访问(redis远程连接不上)的方法
2022/12/24 Redis