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的Django框架中创建语言文件
Jul 27 Python
如何使用VSCode愉快的写Python于调试配置步骤
Apr 06 Python
python简易实现任意位数的水仙花实例
Nov 13 Python
详解Python函数式编程—高阶函数
Mar 29 Python
Python实现EXCEL表格的排序功能示例
Jun 25 Python
详解python实现数据归一化处理的方式:(0,1)标准化
Jul 17 Python
opencv python如何实现图像二值化
Feb 03 Python
Python爬取12306车次信息代码详解
Aug 12 Python
Python paramiko使用方法代码汇总
Nov 20 Python
python 网络编程要点总结
Jun 18 Python
C3 线性化算法与 MRO之Python中的多继承
Oct 05 Python
Python调用腾讯API实现人脸身份证比对功能
Apr 04 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
第六节--访问属性和方法
2006/11/16 PHP
php计算数组不为空元素个数的方法
2014/01/27 PHP
PHP之浮点数计算比较以及取整数不准确的解决办法
2015/07/29 PHP
浅谈PHP发送HTTP请求的几种方式
2017/07/25 PHP
PHP mongodb操作类定义与用法示例【适合mongodb2.x和mongodb3.x】
2018/06/16 PHP
laravel框架邮箱认证实现方法详解
2019/11/22 PHP
javascript显示隐藏层比较不错的方法分析
2008/09/30 Javascript
jquery获得keycode的示例代码
2013/12/30 Javascript
jQuery拖拽div实现思路
2014/02/19 Javascript
js网页滚动条滚动事件实例分析
2015/05/05 Javascript
JavaScript对象数组排序函数及六个用法
2015/12/23 Javascript
基于javascript实现图片懒加载
2016/01/05 Javascript
AngularJS Controller作用域
2017/01/09 Javascript
简单的vue-resourse获取json并应用到模板示例
2017/02/10 Javascript
jquery中绑定事件的异同
2017/02/28 Javascript
Node.js中.pfx后缀文件的处理方法
2017/03/10 Javascript
基于jQuery Easyui实现登陆框界面
2017/07/10 jQuery
实例分析JS与Node.js中的事件循环
2017/12/12 Javascript
angular第三方包开发整理(小结)
2018/04/19 Javascript
浅谈webpack 四个核心概念之Entry
2019/06/12 Javascript
通过实例讲解JS如何防抖动
2019/06/15 Javascript
vue实现计算器功能
2020/02/22 Javascript
Json实现传值到后台代码实例
2020/06/30 Javascript
Python内置模块turtle绘图详解
2017/12/09 Python
python实现自动获取IP并发送到邮箱
2018/12/26 Python
Python简单处理坐标排序问题示例
2019/07/11 Python
深入学习python多线程与GIL
2019/08/26 Python
python二进制读写及特殊码同步实现详解
2019/10/11 Python
Perfume’s Club澳大利亚官网:西班牙领先的在线美容店
2021/02/01 全球购物
女大学生个人求职信
2013/12/09 职场文书
房产委托公证书样本
2014/04/04 职场文书
篮球社团活动总结
2014/06/27 职场文书
国际贸易本科毕业生求职信
2014/09/26 职场文书
试用期旷工辞退通知书
2015/04/17 职场文书
sqlserver2017共享功能目录路径不可改的解决方法
2021/04/16 SQL Server
MYSQL常用函数介绍
2022/05/05 MySQL