Python urllib2运行过程原理解析


Posted in Python onJune 04, 2020

1.urlopen函数

urllib2.urlopen(url[, data[, timeout[, cafile[, capath[, cadefault[, context]]]]])

注:

url表示目标网页地址,可以是字符串,也可以是请求对象Request

req= urllib2.Request(url, data,headers) response = urllib2.urlopen(req,timeout=3)

data表示post方式提交给目标服务器的参数

data = urllib.urlencode(data)

import urllib,urllib2 
action_url="http://www.xxxxxx.com/post"#用于测试post的网址,返回提交的数据 
values={'name':"alice",'age':20} 
data=urllib.urlencode(values)#对表单数据编码 
rqst=urllib2.Request(action_url,data) 
response=urllib2.urlopen(rqst)#模拟提交表单数据到url并获得响应

timeout表示超时时间设置。

返回值

  • response.read()返回页面内容
  • response.info()返回网页信息
  • response.geturl()返回连接地址

这个函数可以像urllib.urlopen()那样以url做参数。也能以Request实例为参数,即用一个Request对象(下文构造方法)来映射你提出的HTTP请求,在它最简单的使用形式中你将用你要请求的地址创建一个Request对象,这个Request对象中可以设置传输数据、headers等。通过调用urlopen并传入Request对象,将返回一个file-like对象。urllib2还提供了接口来处理一般情况,例如:基础验证,cookies,代理和其他,它们通过handlers和openers的对象实现。

2、Request函数

urllib2.Request(url[, data][, headers][, origin_req_host][, unverifiable])

用于构造Request对象,可以传递data数据,添加请求头(headers)等,构造好后作为urllib2.urlopen()的参数。

注:

url表示目标网页地址,可以是字符串,也可以是请求对象Request

data表示post方式提交给目标服务器的参数

headers表示用户标识,是一个字典类型的数据,有些不允许脚本的抓取,所以需要用户代理,像火狐浏览器的代理就是类似:

Mozilla/5.0 (X11; U; Linux i686)Gecko/20071127 Firefox/2.0.0.11

浏览器的标准UA格式为:浏览器标识 (操作系统标识; 加密等级标识; 浏览器语言) 渲染引擎标识 版本信息 ,headers默认是

Python-urllib/2.6

origin_req_host表示请求方的主机域名或者ip地址。

headers = {'User-Agent':'Mozilla/5.0 (X11; U; Linux i686)Gecko/20071127 Firefox/2.0.0.11'}

import urllib  
import urllib2  
url = 'http://www.weibo.cn/'  
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'  
h = { 'User-Agent' : user_agent }  
req = urllib2.Request(url,headers=h)  
response = urllib2.urlopen(req)  
print response.read()

3、build_opener()

build_opener([handler1 [ handler2, ... ]])

urllib2.urlopen()函数不支持验证、cookie或者其它HTTP高级功能。要支持这些功能,必须使用build_opener()函数创建自定义Opener对象。

参数handler是Handler实例,常用的有HTTPBasicAuthHandler、HTTPCookieProcessor、ProxyHandler等。
build_opener ()返回的对象具有open()方法,与urlopen()函数的功能相同。

如果要修改http报头,可以用:

import urllib2 
opener = urllib2.build_opener() 
opener.addheaders = [('User-agent', 'Mozilla/5.0')] 
opener.open('http://www.example.com/')

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
在Windows8上的搭建Python和Django环境
Jul 03 Python
Python中zip()函数用法实例教程
Jul 31 Python
python查询sqlite数据表的方法
May 08 Python
python实现将多个文件分配到多个文件夹的方法
Jan 07 Python
详解numpy.meshgrid()方法使用
Aug 01 Python
使用python实现离散时间傅里叶变换的方法
Sep 02 Python
Django app配置多个数据库代码实例
Dec 17 Python
Python安装依赖(包)模块方法详解
Feb 14 Python
执行Python程序时模块报错问题
Mar 26 Python
在spyder IPython console中,运行代码加入参数的实例
Apr 20 Python
Python如何在windows环境安装pip及rarfile
Jun 15 Python
python二维图制作的实例代码
Dec 03 Python
Python如何生成xml文件
Jun 04 #Python
基于python代码批量处理图片resize
Jun 04 #Python
Python脚本如何在bilibili中查找弹幕发送者
Jun 04 #Python
Python爬虫谷歌Chrome F12抓包过程原理解析
Jun 04 #Python
python实现按键精灵找色点击功能教程,使用pywin32和Pillow库
Jun 04 #Python
解决python图像处理图像赋值后变为白色的问题
Jun 04 #Python
Python爬虫JSON及JSONPath运行原理详解
Jun 04 #Python
You might like
DC最新动画电影:《战争之子》为何内容偏激,毁了一个不错的漫画
2020/04/09 欧美动漫
优化PHP代码技巧的小结
2013/06/02 PHP
浅析PHP程序防止ddos,dns,集群服务器攻击的解决办法
2013/06/18 PHP
PHP获取mysql数据表的字段名称和详细信息的方法
2014/09/27 PHP
PHP中文编码小技巧
2014/12/25 PHP
Open and Print a Word Document
2007/06/15 Javascript
Jquery CheckBox全选方法代码附js checkbox全选反选代码
2010/06/09 Javascript
JQuery调webservice实现邮箱验证(检测是否可用)
2013/05/21 Javascript
如何学习Javascript入门指导
2013/11/01 Javascript
jQuery中delegate()方法用法实例
2015/01/19 Javascript
基于javascript代码检测访问网页的浏览器呈现引擎、平台、Windows操作系统、移动设备和游戏系统
2015/12/03 Javascript
举例讲解jQuery中可见性过滤选择器的使用
2016/04/18 Javascript
微信公众平台开发教程(四) 实例入门:机器人回复(附源码)
2016/12/02 Javascript
JS 插件dropload下拉刷新、上拉加载使用小结
2017/04/13 Javascript
Thinkphp5微信小程序获取用户信息接口的实例详解
2017/09/26 Javascript
微信小程序全局变量GLOBALDATA的定义和调用过程解析
2019/09/23 Javascript
Vue 使用Props属性实现父子组件的动态传值详解
2019/11/13 Javascript
React Hooks 实现和由来以及解决的问题详解
2020/01/17 Javascript
微信小程序实现watch监听
2020/06/04 Javascript
Element Card 卡片的具体使用
2020/07/26 Javascript
[43:53]OG vs EG 2019国际邀请赛淘汰赛 胜者组 BO3 第三场 8.22
2019/09/05 DOTA
为Python的Tornado框架配置使用Jinja2模板引擎的方法
2016/06/30 Python
Python 包含汉字的文件读写之每行末尾加上特定字符
2016/12/12 Python
python中set()函数简介及实例解析
2018/01/09 Python
Selenium chrome配置代理Python版的方法
2018/11/29 Python
python实现图片彩色转化为素描
2019/01/15 Python
基于python操作ES实例详解
2019/11/16 Python
pytorch实现对输入超过三通道的数据进行训练
2020/01/15 Python
Python安装whl文件过程图解
2020/02/18 Python
用React加CSS3实现微信拆红包动画效果
2017/03/13 HTML / CSS
副总经理岗位职责
2014/03/16 职场文书
信用社竞聘演讲稿
2014/05/16 职场文书
优秀员工评优方案
2014/06/13 职场文书
运动会搞笑广播稿
2014/10/14 职场文书
python获取字符串中的email
2022/03/31 Python
腾讯云服务器部署前后分离项目之前端部署
2022/06/28 Servers