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实现堆栈与队列的方法
Jan 15 Python
Python描述器descriptor详解
Feb 03 Python
对Python中type打开文件的方式介绍
Apr 28 Python
pytorch 固定部分参数训练的方法
Aug 17 Python
pytorch获取vgg16-feature层输出的例子
Aug 20 Python
使用Python进行防病毒免杀解析
Dec 13 Python
在Python中通过threshold创建mask方式
Feb 19 Python
Python内建序列通用操作6种实现方法
Mar 26 Python
Django权限设置及验证方式
May 13 Python
在python下实现word2vec词向量训练与加载实例
Jun 09 Python
如何在scrapy中集成selenium爬取网页的方法
Nov 18 Python
再也不用花钱买漫画!Python爬取某漫画的脚本及源码
Jun 09 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
虹吸壶煮咖啡26个注意事项
2021/03/03 冲泡冲煮
PHP一些有意思的小区别
2006/12/06 PHP
php5.3提示Function ereg() is deprecated Error问题解决方法
2014/11/12 PHP
php中socket通信机制实例详解
2015/01/03 PHP
学习YUI.Ext 第四天--对话框Dialog的使用
2007/03/10 Javascript
google地图的路线实现代码
2009/08/20 Javascript
关于Mozilla浏览器不支持innerText的解决办法
2011/01/01 Javascript
jquery live()重复绑定的解决方法介绍
2014/01/03 Javascript
javascript在IE下trim函数无法使用的解决方法
2014/09/12 Javascript
JS实现仿新浪微博发布内容为空时提示功能代码
2015/08/19 Javascript
JS组件Bootstrap Table表格多行拖拽效果实现代码
2015/12/08 Javascript
AngularJS基础 ng-href 指令用法
2016/08/01 Javascript
jQuery插件Easyui设置datagrid的pageNumber导致两次请求问题的解决方法
2016/08/06 Javascript
js 判断登录界面的账号密码是否为空
2017/02/08 Javascript
Ajax基础知识详解
2017/02/17 Javascript
解决vue脚手架项目打包后路由视图不显示的问题
2018/09/20 Javascript
微信小程序云开发修改云数据库中的数据方法
2019/05/18 Javascript
[03:28]2014DOTA2国际邀请赛 EG战队官方纪录片
2014/07/21 DOTA
python中getattr函数使用方法 getattr实现工厂模式
2014/01/20 Python
用Python代码来解图片迷宫的方法整理
2015/04/02 Python
使用Python对MySQL数据操作
2017/04/06 Python
Python实现简单过滤文本段的方法
2017/05/24 Python
python批量复制图片到另一个文件夹
2018/09/17 Python
python base64库给用户名或密码加密的流程
2020/01/02 Python
tensorflow模型保存、加载之变量重命名实例
2020/01/21 Python
简述 Python 的类和对象
2020/08/21 Python
python中not、and和or的优先级与详细用法介绍
2020/11/03 Python
使用HTML5 Canvas为图片填充颜色和纹理的教程
2016/03/21 HTML / CSS
详解移动端h5页面根据屏幕适配的四种方案
2020/04/15 HTML / CSS
Nike法国官方网站:Nike.com FR
2018/07/22 全球购物
亚马逊新加坡官方网站:Amazon.sg
2020/03/25 全球购物
如何写出好的Java代码
2014/04/25 面试题
企业消防安全责任书
2014/07/23 职场文书
大学生心理健康活动总结
2015/05/08 职场文书
2015年宣传思想工作总结
2015/05/22 职场文书
Hive常用日期格式转换语法
2022/06/25 数据库