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脚本实现批量网站存活检测遇到问题及解决方法
Oct 11 Python
在django中使用自定义标签实现分页功能
Jul 04 Python
用tensorflow构建线性回归模型的示例代码
Mar 05 Python
Python实现修改文件内容的方法分析
Mar 25 Python
Python2包含中文报错的解决方法
Jul 09 Python
Python中作用域的深入讲解
Dec 10 Python
Pycharm简单使用教程(入门小结)
Jul 04 Python
Python3常见函数range()用法详解
Dec 30 Python
PyTorch中 tensor.detach() 和 tensor.data 的区别详解
Jan 06 Python
Python matplotlib绘制图形实例(包括点,曲线,注释和箭头)
Apr 17 Python
Python小白不正确的使用类变量实例
May 29 Python
Python如何解除一个装饰器
Aug 07 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 截取字符串并以零补齐str_pad() 函数
2011/05/07 PHP
ECMall支持SSL连接邮件服务器的配置方法详解
2014/05/19 PHP
PHP解决URL中文GBK乱码问题的两种方法
2014/06/03 PHP
发两个小东西,ASP/PHP 学习工具。 用JavaScript写的
2007/04/12 Javascript
ext jquery 简单比较
2010/04/07 Javascript
jquery右下角自动弹出可关闭的广告层
2015/05/08 Javascript
jQuery调用Webservice传递json数组的方法
2016/08/06 Javascript
基于Node.js + WebSocket打造即时聊天程序嗨聊
2016/11/29 Javascript
canvas实现探照灯效果
2017/02/07 Javascript
JS实现留言板功能
2017/06/17 Javascript
JavaScript实现简单动态进度条效果
2018/04/06 Javascript
JS实现DOM节点插入操作之子节点与兄弟节点插入操作示例
2018/07/30 Javascript
Jquery实现获取子元素的方法分析
2019/08/24 jQuery
Vue.js 实现地址管理页面思路详解(地址添加、编辑、删除和设置默认地址)
2019/12/11 Javascript
[02:19]DOTA2女子战队FOX视频专访:希望更多美眉一起加入
2013/10/15 DOTA
Python基于递归算法实现的走迷宫问题
2017/08/04 Python
python requests抓取one推送文字和图片代码实例
2019/11/04 Python
python对象销毁实例(垃圾回收)
2020/01/16 Python
Python底层封装实现方法详解
2020/01/22 Python
利用4行Python代码监测每一行程序的运行时间和空间消耗
2020/04/22 Python
python矩阵运算,转置,逆运算,共轭矩阵实例
2020/05/11 Python
python的Jenkins接口调用方式
2020/05/12 Python
python判断all函数输出结果是否为true的方法
2020/12/03 Python
J.Crew官网:美国知名休闲服装品牌
2017/05/19 全球购物
企业消防安全制度
2014/02/02 职场文书
西式婚礼主持词
2014/03/13 职场文书
电子商务专业毕业生求职信
2014/06/12 职场文书
2014个人反腐倡廉思想汇报
2014/09/15 职场文书
房屋分割离婚协议书范本
2014/12/01 职场文书
自愿离婚协议书范本
2015/01/26 职场文书
2015年幼师工作总结
2015/04/28 职场文书
施工现场安全管理制度
2015/08/05 职场文书
MySQL InnoDB ReplicaSet(副本集)简单介绍
2021/04/24 MySQL
安装pytorch时报sslerror错误的解决方案
2021/05/17 Python
游戏《我的世界》澄清Xbox版暂无计划加入光追
2022/04/03 其他游戏
vue-cil之axios的二次封装与proxy反向代理使用说明
2022/04/07 Vue.js