当前位置:
首页 > Python基础教程 >
-
程序模拟浏览器请求及会话保持-python实现
python下读取一个页面的数据可以通过urllib2轻松实现请求
1
2
|
import urllib2 print urllib2.urlopen( 'http://www.pythontab.com' ).read() |
涉及到页面的POST请求操作的话需要提供头信息,提交的post数据和请求页面。
其中的post数据需要urllib.encode()一下,其实就是将字典转换成“data1=value1&data2=value2”的格式。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
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下面需要设置一下cookie的保持
1
2
3
4
5
6
|
# cookie set # 用来保持会话 cj = cookielib.LWPCookieJar() cookie_support = urllib2.HTTPCookieProcessor(cj) opener = urllib2.build_opener(cookie_support, urllib2.HTTPHandler) urllib2.install_opener(opener) |
下面是将以上知识点汇总写的一个库文件,方便使用:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
# 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/8 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 |
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式