urllib 和urllib2 模块使用简例
一、最简单的使用
import urllib,urllib2 response = urllib2.urlopen("https://www.baidu.com")
print response.read()
二、构造Request对象
request = urllib2.Request("https://www.baidu.com")
response = urllib2.urlopen(request)
print response.read()
三、通过POST 、GET 方式请求
POST
values = {'username':'test','passwrod':''}
data = urllib.urlencode(values)
print data # username=test&passwrod=123
request = urllib2.Request("https://www.baidu.com",data=data)
response = urllib2.urlopen(request)
print response.read()
GET
value = {}
value['username']='test'
value['password']=''
data = urllib.urlencode(value)
url = "https://www.baidu.com"+"?"+data
print url # https://www.baidu.com?username=test&password=123
request = urllib2.Request(url=url)
response = urllib2.urlopen(request)
print response.read()
四、quote,进行编码
a = '哈哈'
A = urllib.quote(a)
print A
B = urllib.unquote(A)
print B
urlencode在 三 中的 GET 部分已有样例
五、设置请求头 header
url = "https://www.baidu.com"
value = {"username":"test","password":""}
data = urllib.urlencode(value)
header = {
"User-Agent":"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:50.0) Gecko/20100101 Firefox/50.0",
"Referer":"http://tieba.baidu.com/f?kw=%E4%BF%9D%E5%AE%9A&ie=utf-8&pn=50"
}
request = urllib2.Request(url=url,data=data,headers=header)
response = urllib2.urlopen(request)
print response.read()
urlopen是urllib2.OpenerDirector的一个实例,一个opener ,一个特殊的默认的opener.因此,这个opener并不能总是满足我们的需求,
这个时候,就需要我们自己构造自己的opener了。
源码摘录
_opener = None
def install_opener(opener):
global _opener
_opener = opener
# ————————————————————————————————————————————————
def urllopen():
"""..."""
return opener.open(url, data, timeout)
六、设置代理
enable_proxy = True
proxy_handler = urllib2.ProxyHandler({"http" : 'http://some-proxy.com:8080'})
null_proxy = urllib2.ProxyHandler({})
if enable_proxy:
opener = urllib2.build_opener(proxy_handler) #创建一个opener对象
else:
opener = urllib2.build_opener(null_proxy)
#
urllib2.install_opener(opener) #全局应用该opener request = urllib2.Request("https://www.baidu.com")
response = opener.open(request)
response = urllib2.urlopen(request)
#
print response.read()
七、操作cookie
import cookielib #创建一个CookieJar实例来保存cookie
cookie = cookielib.CookieJar() # 创建 Cookie 处理器
handler = urllib2.HTTPCookieProcessor(cookie) #创建一个 opener
opener = urllib2.build_opener(handler) # 用带有cookie 处理器的opener 来请求url
response = opener.open("https://www.baidu.com")
#
for item in cookie:
print item #<Cookie BIDUPSID=25441729620BF793C1BE08CA0B43C8D4 for .baidu.com/>
print 'Name = '+item.name #Name = BIDUPSID
print 'Value = '+item.value #Value = 25441729620BF793C1BE08CA0B43C8D4
八、保存cookie到文件
import cookielib filename = "/home/an/savecookie.test"
#创建一个 MozillaCookieJar 对象来保存cookie ,稍后写入对象
cookie = cookielib.MozillaCookieJar(filename)
# 创建 cookie 处理器
handle = urllib2.HTTPCookieProcessor(cookie)
#构建 handler
opener = urllib2.build_opener(handle) response = opener.open("http://www.baidu.com")
#保存cookie到文件
cookie.save(ignore_discard=True,ignore_expires=True)
# ignore_discard 即使cookie被丢弃也保存下来。
# ignore_expires 如果该文件中的cookie已存在,那么就覆盖
九、从文件中取出cookie并使用
import cookielib cookie = cookielib.MozillaCookieJar()
cookie.load("/home/an/savecookie.test",ignore_expires=True,ignore_discard=True) handler = urllib2.HTTPCookieProcessor(cookie)
opener = urllib2.build_opener(handler) request = urllib2.Request("http://www.baidu.com")
response = opener.open(request)
print response.read()
urllib 和urllib2 模块使用简例的更多相关文章
- Python的urllib和urllib2模块
Python的urllib和urllib2模块都做与请求URL相关的操作,但他们提供不同的功能.他们两个最显着的差异如下: urllib2可以接受一个Request对象,并以此可以来设置一个URL的h ...
- Python urllib和urllib2模块学习(二)
一.urllib其它函数 前面介绍了 urllib 模块,以及它常用的 urlopen() 和 urlretrieve()函数的使用介绍.当然 urllib 还有一些其它很有用的辅助方法,比如对 ur ...
- Python urllib和urllib2模块学习(一)
(参考资料:现代魔法学院 http://www.nowamagic.net/academy/detail/1302803) Python标准库中有许多实用的工具类,但是在具体使用时,标准库文档上对使用 ...
- Python urllib和urllib2模块学习(三)
build_opener()详解: 1.urllib2.urlopen()函数不支持验证.cookie或者其它HTTP高级功能,要支持这些功能,必须使用build_opener()函数创建自定这句话的 ...
- 深入理解urllib、urllib2及requests
urllib and urllib2 区别 –博主提示:下面的是python2中的用法,python3需要做出相应修改. urllib和urllib2模块都做与请求URL相关的操作,但他们提供不同的功 ...
- 理解urllib、urllib2及requests区别及运用
urllib and urllib2 区别 –博主提示:下面的是python2中的用法,python3需要做出相应修改. urllib和urllib2模块都做与请求URL相关的操作,但他们提供不同的功 ...
- urllib与urllib2的学习总结
先啰嗦一句,我使用的版本是python2.7,没有使用3.X的原因是我觉得2.7的扩展比较多,且较之前的版本变化不大,使用顺手.3.X简直就是革命性的变化,用的蹩手.3.x的版本urllib与urll ...
- 洗礼灵魂,修炼python(54)--爬虫篇—urllib2模块
urllib2 1.简介 urllib2模块定义的函数和类用来获取URL(主要是HTTP的),他提供一些复杂的接口用于处理: 基本认证,重定向,Cookies等.urllib2和urllib差不多,不 ...
- 关于urllib、urllib2爬虫伪装的总结
站在网站管理的角度,如果在同一时间段,大家全部利用爬虫程序对自己的网站进行爬取操作,那么这网站服务器能不能承受这种负荷?肯定不能啊,如果严重超负荷则会时服务器宕机(死机)的,对于一些商业型的网站,宕机 ...
随机推荐
- [C++ Primer] : 第13章: 拷贝控制
拷贝, 赋值与销毁 当定义一个类时, 我们显示地或隐式地指定在此类型的对象拷贝, 移动, 赋值和销毁时做什么. 一个类通过定义5种特殊的成员函数来控制这些操作, 包括: 拷贝构造函数, 拷贝赋值运算符 ...
- dede头 名字 和关键字的调用
<title>{dede:global.cfg_webname/}</title><meta name="description" content=& ...
- C# 日期格式化的中的(/)正斜杠的问题(与操作系统设置有关)
Console.WriteLine(DateTime.Now.ToString("yyyy/MM/dd" )); //这行代码, 如果你在系统日期格式默认的情况下输出 2013/0 ...
- appium+python自动化38-adb shell按键操作(input keyevent)
前言 接着上篇介绍input里面的按键操作keyevent事件,发送手机上常用的一些按键操作 keyevent 1.keyevent事件有一张对应的表,可以直接发送对应的数字,也可以方式字符串,如下两 ...
- unittest框架进坑系列_(含selenium数据分离的坑)
1.测试用例的执行顺序 有默认的顺序的,不是按你自己的排列执行,注意. 进坑原因,没有先执行制造变量的测试用例,导致其他用例无法找到变量值 2.数据分离的坑 在控制层 有函数嵌套,2个函数都必须带se ...
- JavaScript-Tool:Moment.js
ylbtech-JavaScript-Tool:Moment.js Parse, validate, manipulate, and display dates and times in JavaSc ...
- [UE4] 虚幻4学习---UE4中的字符串转换
String Conversions: FString To FName FString To Int32 Float To FString FArrayReaderPtr To FString TA ...
- Hibernate 一对多/多对多
一对多关联(多对一): 一对多关联映射: 在多的一端添加一个外键指向一的一端,它维护的关系是一指向多 多对一关联映射: 咋多的一端加入一个外键指向一的一端,它维护的关系是多指向一 在配置文件中添加: ...
- 第8章 信号(6)_贯穿案例2:mini shell(3)
4. 贯穿案例2:mini shell(3) (1)之前存在问题 ①刚运行时,mshell作为前台进程.运行的其他命令会被加入新的进程组,并且调用tcsetpgrp将这个进程组设置为前台进程组,因此m ...
- linux主机555、644、666、755、777权限详解
linux主机555.644.666.755.777权限详解 发表时间:2014-06-03 05:07 来源:未知 分类:其它代码 作者:岑溪网站开发 点击:次 linux主机555.644.666 ...