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爬虫伪装的总结
站在网站管理的角度,如果在同一时间段,大家全部利用爬虫程序对自己的网站进行爬取操作,那么这网站服务器能不能承受这种负荷?肯定不能啊,如果严重超负荷则会时服务器宕机(死机)的,对于一些商业型的网站,宕机 ...
随机推荐
- bzoj 3277 串 && bzoj 3473 字符串 && bzoj 2780 [Spoj]8093 Sevenk Love Oimaster——广义后缀自动机
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3277 https://www.lydsy.com/JudgeOnline/problem.p ...
- jquery.validate.js remote (php)
网上的人不厚道呀 validate 这玩意的异步是 返回的 echo 'true' 或者 echo 'false';很少有人说呀~.~ 转载了一篇原文: jquery.validate.js对于数 ...
- sql 防注入 维基百科
http://zh.wikipedia.org/wiki/SQL%E8%B3%87%E6%96%99%E9%9A%B1%E7%A2%BC%E6%94%BB%E6%93%8A SQL攻击(SQL inj ...
- 知识点查缺补漏贴02:Linux环境fork()函数详解
引言 先来看一段代码吧, #include <sys/types.h> #include <unistd.h> #include <stdio.h> #includ ...
- 接口测试3-3Excel格式
java操作Excel,需要第三方库poi #xml <dependency> <groupId>org.apache.poi</groupId> <arti ...
- post 中文数据到elasticsearch restful接口报json_parse_exception 问题
我们的客户端程序直接调用es 的restful接口, 通过post json数据去查询, 但post数据有中文的时候,有些中文会报异常,有些中文不会 {"error":{" ...
- 伯克利、OpenAI等提出基于模型的元策略优化强化学习
基于模型的强化学习方法数据效率高,前景可观.本文提出了一种基于模型的元策略强化学习方法,实践证明,该方法比以前基于模型的方法更能够应对模型缺陷,还能取得与无模型方法相近的性能. 引言 强化学习领域近期 ...
- 基于Linux的Samba开源共享解决方案测试(五)
对于客户端的网络监控如图: 双NAS网关50Mb码率视音频文件的稳定写测试结果如下: 100Mb/s负载性能记录 NAS网关资源占用 稳定写 稳定写 CPU空闲 内存空闲 网卡占用 NAS1 16个稳 ...
- RHEL6.x查看网卡槽位对应设备文件及路径
先查看网卡mac地址,由于我的服务器做了mac地址绑定,所以会有相同的hwaddr地址,请忽略. [root@node-0a0a05d3- net]# ifconfig eth0 | grep HWa ...
- sweetalert插件使用
内容: 1.插件介绍 2.插件使用 1.插件介绍 SweetAlert是一个JS插件,能够完美替代JS自带的alert弹出框,并且功能强大,设计优美 使用这个很方便,推荐使用这个插件来写alert s ...