urllib库

参考网上介绍

1. urllib.urlopen( url[ , data[ , proxies] ] )

创建一个远程url的类文件的对象,可以像本地文件一样操作这个类文件对象来获取远程数据。

url : 表示远程数据的路径,一般为网址

data : 以post方式提交到url的数据,较少用到

proxies : 用于设置代理

 

urlopen返回对象提供方法:

  read(), readline(), readlines(), fileno(), close() : 这些方法的使用方式与文件对象完全一样

  info() : 返回一个httplib.HTTPMessage对象,表示远程服务器返回的头信息

  getcode() : 返回Http状态码。 pythone2.6版本以上

  geturl() : 返回请求的url

import urllib

url = "www.baidu.com"
proxies = {'http' : 'http://www.someproxy.com:3128'}

filehandle = urllib.urlopen(url, proxies = proxies)

filehandle = urllib.urlopen(url)

print filehandle.read()
print filehandle.info()
print filehandle.getcode()
filehandle.close() 

 

附带的其它方法: (主要是url编码解码)

  urllib.quote(string[ , safe]) : 对字符串进行编码。参数safe指定了不需要编码的字符

  urllib.unquote(string) : 对字符串进行解码

  urllib.quote_plus(string[ , safe]) : 与urllib.quote类似,但这个方法用'+'来替换' ',而quote用'%20'来代替' '

  urllib.unquote_plus(string ) :对字符串进行解码

  urllib.urlencode(query[, doseq]):将dict或者包含两个元素的元组列表转换成url参数。例如 字典{'name': 'wklken', 'pwd': '123'}将被转换为"name=wklken&pwd=123"

  urllib.pathname2url(path):将本地路径转换成url路径

  urllib.url2pathname(path):将url路径转换成本地路径

# coding=gbk
import urllib
import sys

s = "马伊琍"
s2 = s.decode(sys.stdin.encoding).encode("utf8")

keyword=urllib.quote(s2)
page=urllib.urlopen("http://www.baidu.com/s?wd="+keyword+"&pn=100&rn=20&ie=utf-8&usm=4&rsv_page=1")
print page.geturl()

hfile = open("E:\\1.htm","w")
hfile.write(page.read())
page.close()
hfile.close()

 

2.urllib.urlretrieve(url[, filename[, reporthook[, data]]])

将远程数据下载到本地

filename指定保存到本地的路径(若未指定该,urllib生成一个临时文件保存数据)

reporthook回调函数,当连接上服务器、以及相应的数据块传输完毕的时候会触发该回调

data指post到服务器的数据

该方法返回一个包含两个元素的元组(filename, headers),filename表示保存到本地的路径,header表示服务器的响应头

import urllib

s = urllib.urlretrieve("http://images.china.cn/news/attachement/jpg/site3/20111028/879003781387041495.jpg","E:\\1.jpg")
for item in s:
    print item
posted @ 2012-11-25 22:37  traits  阅读(489)  评论(0编辑  收藏  举报