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 thread 并发且顺序运行示例
Apr 09 Python
python通过邮件服务器端口发送邮件的方法
Apr 30 Python
Django与JS交互的示例代码
Aug 23 Python
python添加模块搜索路径方法
Sep 11 Python
python清除字符串前后空格函数的方法
Oct 21 Python
Python3.7 dataclass使用指南小结
Feb 22 Python
python django下载大的csv文件实现方法分析
Jul 19 Python
Python 闭包,函数分隔作用域,nonlocal声明非局部变量操作示例
Oct 14 Python
Python reversed函数及使用方法解析
Mar 17 Python
为什么说python更适合树莓派编程
Jul 20 Python
Pycharm常用快捷键总结及配置方法
Nov 14 Python
Python基于爬虫实现全网搜索并下载音乐
Feb 14 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中iconv函数使用方法
2008/05/24 PHP
php实现的常见排序算法汇总
2014/09/08 PHP
php使用数组填充下拉列表框的方法
2015/03/31 PHP
WampServer搭建php环境时遇到的问题汇总
2015/07/23 PHP
thinkphp5修改view到根目录实例方法
2019/07/02 PHP
因str_replace导致的注入问题总结
2019/08/08 PHP
jQuery简单实现banner图片切换
2014/01/02 Javascript
通过pjax实现无刷新翻页(兼容新版jquery)
2014/01/31 Javascript
JS实现静止元素自动移动示例
2014/04/14 Javascript
jQuery实现返回顶部功能适合不支持js的浏览器
2014/08/19 Javascript
JS实现在页面随时自定义背景颜色的方法
2015/02/27 Javascript
jquery滚动到顶部底部代码
2015/04/20 Javascript
开启BootStrap学习之旅
2016/05/04 Javascript
Node.js与MySQL交互操作及其注意事项
2016/10/05 Javascript
微信小程序 this和that详解及简单实例
2017/02/13 Javascript
微信小程序 弹窗自定义实例代码
2017/03/08 Javascript
jQuery动态产生select option下拉列表
2017/03/15 Javascript
JS库之Particles.js中文开发手册及参数详解
2017/09/13 Javascript
探索webpack模块及webpack3新特性
2017/09/18 Javascript
vue注册组件的几种方式总结
2018/03/08 Javascript
JavaScript偏函数与柯里化实例详解
2019/03/27 Javascript
react-intl实现React国际化多语言的方法
2020/09/27 Javascript
用Python展示动态规则法用以解决重叠子问题的示例
2015/04/02 Python
python中range()与xrange()用法分析
2016/09/21 Python
使用PyV8在Python爬虫中执行js代码
2017/02/16 Python
在Python函数中输入任意数量参数的实例
2019/07/16 Python
keras训练曲线,混淆矩阵,CNN层输出可视化实例
2020/06/15 Python
css3实现元素环绕中心点布局的方法示例
2019/01/15 HTML / CSS
厨师长岗位职责
2014/03/02 职场文书
2014全国两会学习心得体会2000字
2014/03/10 职场文书
买卖协议书范本
2014/04/21 职场文书
2014年最新学校运动会广播稿
2014/09/17 职场文书
采购内勤岗位职责
2015/04/13 职场文书
小学生表扬稿范文
2015/05/05 职场文书
pytorch MSELoss计算平均的实现方法
2021/05/12 Python
python微信智能AI机器人实现多种支付方式
2022/04/12 Python