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实现bitmap数据结构详解
Feb 17 Python
Python操作MySQL模拟银行转账
Mar 12 Python
运用Python的webbrowser实现定时打开特定网页
Feb 21 Python
Python实现简单层次聚类算法以及可视化
Mar 18 Python
解决Django 在ForeignKey中出现 non-nullable field错误的问题
Aug 06 Python
python实现邮件自动发送
Aug 10 Python
Python使用tkinter模块实现推箱子游戏
Oct 08 Python
WxPython实现无边框界面
Nov 18 Python
python3中numpy函数tile的用法详解
Dec 04 Python
pycharm部署、配置anaconda环境的教程
Mar 24 Python
python判断正负数方式
Jun 03 Python
Python工程师必考的6个经典面试题
Jun 28 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
PHP 函数执行效率的小比较
2010/10/17 PHP
Pain 全世界最小最简单的PHP模板引擎 (普通版)
2011/10/23 PHP
PHPExcel读取Excel文件的实现代码
2011/12/06 PHP
CodeIgniter中使用Smarty3基本配置
2015/06/29 PHP
PHP微信开发之有道翻译
2016/06/23 PHP
用roll.js实现的图片自动滚动+鼠标触动的特效
2007/03/18 Javascript
js 全兼容可高亮二级缓冲折叠菜单
2010/06/04 Javascript
jQuery插件实现表格隔行换色且感应鼠标高亮行变色
2013/09/22 Javascript
在JavaScript中使用开平方根的sqrt()方法
2015/06/15 Javascript
浅谈JavaScript对象与继承
2016/07/10 Javascript
值得分享的bootstrap table实例
2016/09/22 Javascript
浅析javaScript中的浅拷贝和深拷贝
2017/02/15 Javascript
php中and 和 &&出坑指南
2018/07/13 Javascript
对angularJs中ng-style动态改变样式的实例讲解
2018/09/30 Javascript
React Hooks的深入理解与使用
2018/11/12 Javascript
浅入深出Vue之自动化路由
2019/08/06 Javascript
jQuery实现手风琴特效
2021/01/11 jQuery
学习python之编写简单简单连接数据库并执行查询操作
2016/02/27 Python
python操作 hbase 数据的方法
2016/12/18 Python
python实现猜数字小游戏
2020/03/24 Python
python整合ffmpeg实现视频文件的批量转换
2019/05/31 Python
Python连接Hadoop数据中遇到的各种坑(汇总)
2020/04/14 Python
举例讲解Python装饰器
2020/12/24 Python
HTML5 标准将把互联网视频扔回到黑暗时代
2010/02/10 HTML / CSS
俄罗斯在线购买飞机票、火车票、巴士票网站:Tutu.ru
2020/03/16 全球购物
英文自荐信
2013/12/19 职场文书
写自荐信要注意什么
2013/12/26 职场文书
《月球之谜》教学反思
2014/04/10 职场文书
不错的求职信范文
2014/07/20 职场文书
鼋头渚导游词
2015/02/05 职场文书
活动费用申请报告
2015/05/15 职场文书
公司趣味运动会开幕词
2016/03/04 职场文书
Redis分布式锁Redlock的实现
2021/08/07 Redis
关于 Python json中load和loads区别
2021/11/07 Python
基于Python实现nc批量转tif格式
2022/08/14 Python