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采集博客中上传的QQ截图文件
Jul 18 Python
python分割列表(list)的方法示例
May 07 Python
Python实现读取字符串按列分配后按行输出示例
Apr 17 Python
python模块smtplib实现纯文本邮件发送功能
May 22 Python
判断python字典中key是否存在的两种方法
Aug 10 Python
TensorFlow实现简单的CNN的方法
Jul 18 Python
Numpy之reshape()使用详解
Dec 26 Python
基于Python3.7.1无法导入Numpy的解决方式
Mar 09 Python
python Matplotlib模块的使用
Sep 16 Python
浅析关于Keras的安装(pycharm)和初步理解
Oct 23 Python
Window10上Tensorflow的安装(CPU和GPU版本)
Dec 15 Python
python字典按照value排序方法
Dec 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下通过系统信号量加锁方式获取递增序列ID
2009/09/25 PHP
php rsa 加密,解密,签名,验签详解
2016/12/06 PHP
PHP 500报错的快速解决方法
2016/12/14 PHP
ThinkPHP框架实现定时执行任务的两种方法分析
2018/09/04 PHP
懒就要懒到底——鼠标自动点击(含时间判断)
2007/02/20 Javascript
JQuery this 和 $(this) 的区别
2009/08/23 Javascript
用 Javascript 验证表单(form)中多选框(checkbox)值
2009/09/08 Javascript
FireFox下XML对象转化成字符串的解决方法
2011/12/09 Javascript
解决checkbox的attr(checked)一直为undefined问题
2014/06/16 Javascript
使用jquery插件qrcode生成二维码
2015/10/22 Javascript
JavaScript中数据类型转换总结
2016/12/25 Javascript
jquery实现文字单行横移或翻转(上下、左右跳转)
2017/01/08 Javascript
Angularjs中数据绑定的实例详解
2017/08/25 Javascript
JS实现按钮颜色切换效果
2020/09/05 Javascript
windows下更新npm和node的方法
2017/11/30 Javascript
详解vue 项目白屏解决方案
2018/10/31 Javascript
JS拖拽排序插件Sortable.js用法实例分析
2019/02/20 Javascript
Node.js Stream ondata触发时机与顺序的探索
2019/03/08 Javascript
JS Ajax请求会话过期处理问题解决方法分析
2019/11/16 Javascript
vue实现自定义多选按钮
2020/07/16 Javascript
JS获取一个字符串中指定字符串第n次出现的位置
2021/02/10 Javascript
Python实现删除Android工程中的冗余字符串
2015/01/19 Python
pymongo实现控制mongodb中数字字段做加法的方法
2015/03/26 Python
python计算两个数的百分比方法
2018/06/29 Python
Pycharm无法显示动态图片的解决方法
2018/10/28 Python
对python中list的拷贝与numpy的array的拷贝详解
2019/01/29 Python
django 使用 PIL 压缩图片的例子
2019/08/16 Python
python中random.randint和random.randrange的区别详解
2020/09/20 Python
HTML5 拖放功能实现代码
2016/07/14 HTML / CSS
Kathmandu英国网站:新西兰户外运动品牌
2017/03/27 全球购物
日本最大的购物网站:日本乐天市场(Rakuten Ichiba)
2020/11/04 全球购物
《飞向蓝天的恐龙》教学反思
2014/04/09 职场文书
公证委托书
2014/08/01 职场文书
军人离婚协议书样本
2014/10/21 职场文书
水电工岗位职责
2015/02/14 职场文书
小学校长开学致辞
2015/07/29 职场文书