urllib 模块使用简例

一、最简单的使用

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‘:‘123‘}
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‘]=‘123‘
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":"123"}
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()

时间: 2024-10-10 05:40:04

urllib 模块使用简例的相关文章

require.js【模块化编程】- 模块加载简例

今天去学习了一下javascript的模块化编程,写了个简单的例子. ———————————————— 这是我的第一篇技术性的小博文,希望和大家相互交流  ———————————————— 这个列子我打算分两个部分罗列: 1.文件地图 2.源代码 demo.html: 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtm

学习Python的urllib模块

 urllib 模块作为Python 3 处理 URL 的组件集合,如果你有 Python 2 的知识,那么你就会注意到 Python 2 中有 urllib 和 urllib2 两个版本的模块,这些现在都是 Python 3 的 urllib 包的一部分,具体如何来体现它们之间的关系 Python 3 的 urllib 模块是一堆可以处理 URL 的组件集合.如果你有 Python 2 的知识,那么你就会注意到 Python 2 中有 urllib 和 urllib2 两个版本的模块.这些现在

urllib模块中的方法

urllib模块中的方法 1.urllib.urlopen(url[,data[,proxies]]) 打开一个url的方法,返回一个文件对象,然后可以进行类似文件对象的操作.本例试着打开google >>> import urllib >>> f = urllib.urlopen('http://www.google.com.hk/') >>> firstLine = f.readline()   #读取html页面的第一行 >>>

Ansible 入门:安装 简例 playbook应用

Mysql 内:select unix_timestamp('2016-10-20')  <---> select from_unixtime(147662104) 转时间戳:date +%s   <--->  date -d @1476762104              ---- 小 Q -----------------------------------------------------------------------------------------------

[转]Python核心模块——urllib模块

现在Python基本入门了,现在开始要进军如何写爬虫了! 先把最基本的urllib模块弄懂吧. urllib模块中的方法 1.urllib.urlopen(url[,data[,proxies]]) 打开一个url的方法,返回一个文件对象,然后可以进行类似文件对象的操作.本例试着打开google >>> import urllib >>> f = urllib.urlopen('http://www.google.com.hk/') >>> first

urllib 模块 https://www.cnblogs.com/guishou/articles/7089496.html

1.基本方法 urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None) -         url:  需要打开的网址 -         data:Post提交的数据 -         timeout:设置网站的访问超时时间 直接用urllib.request模块的urlopen()获取页面,page的数据格式为bytes类型,需要

定义一个方法get_page(url),url参数是需要获取网页内容的网址,返回网页的内容。提示(可以了解python的urllib模块)

1 定义一个方法get_page(url),url参数是需要获取网页内容的网址,返回网页的内容.提示(可以了解python的urllib模块) 2 import urllib.request 3 4 def get_page(url): 5 response = urllib.request.urlopen(url) 6 html = response.read() 7 return html 8 9 print(get_page(url='https://www.baidu,com'))

linux下C语言socket网络编程简例

转自:http://blog.csdn.net/kikilizhm/article/details/7858405 这里给出在linux下的简单socket网络编程的实例,使用tcp协议进行通信,服务端进行监听,在收到客户端的连接后,发送数据给客户端:客户端在接受到数据后打印出来,然后关闭.程序里有详细的说明,其中对具体的结构体和函数的实现可以参考其他资料. 程序说明: 这里服务器的端口号和ip地址使用固定的设置,移植时可以根据具体情况更改,可以改写为参数传递更好,这里为了方便,使用固定的. 移

Python学习-20.Python的Urllib模块

除了 Http 模块可以模拟 Http 请求外,使用 Urllib 模块也是可以模拟 Http 请求的,只不过功能相对弱一点. 1 import urllib.request 2 3 opener = urllib.request.urlopen("http://www.baidu.com") 4 bytes = opener.read() 5 html = bytes.decode('gbk','ignore') 6 print(html) 7 opener.close() 获取百度