- import hashlib
-
print '-' * 25, '更简洁的语法', '-' * 25
-
print hashlib.new("md5", "JGood is a handsome boy").hexdigest()
2. 整理这个库的用法
urllib.urlopen(url[, data[, proxies]]) :
创建一个表示远程url的类文件对象,然后像本地文件一样操作这个类文件对象来获取远程数据。参数url表示远程数据的路径,
一般是网址;参数data表示以post方式提交到url的数据(玩过web的人应该知道提交数据的两种方式:post与get。如果你不清楚,
也不必太在意,一般情况下很少用到这个参数);参数proxies用于设置代理。
urlopen返回 一个类文件对象,他提供了如下方法:
read() , readline() , readlines() , fileno() , close() :这些方法的使用方式与文件对象完全一样;
info():返回一个httplib.HTTPMessage 对象,表示远程服务器返回的头信息;
getcode():返回Http状态码。如果是http请求,200表示请求成功完成;404表示网址未找到;
geturl():返回请求的url;
urllib中还提供了一些辅助方法,用于对url进行编码、解码。url中是不能出现一些特殊的符号的,
有些符号有特殊的用途。我们知道以get方式提交数据的时候,会在url中添加key=value这样的字符串,
所以在value中是不允许有'=',因此要对其进行编码;与此同时服务器接收到这些参数的时候,要进行解码,
还原成原始的数据。这个时候,这些辅助方法会很有用:
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': 'dark-bull', 'age': 200}将被转换为"name=dark-bull&age=200"
urllib.pathname2url(path):将本地路径转换成url路径;
urllib.url2pathname(path):将url路径转换成本地路径;
还可以模拟请求头
头:
我们将会在这里讨论一个特殊的HTTP头,来阐释怎么向你的HTTP请求中加入头。
有一些网站不希望被某些程序浏览或者针对不同的浏览器返回不同的版本。默认情况下,urlib2把自己识别为Python-urllib/x.y(这里的xy是python发行版的主要或次要的版本号,如, Python-urllib/2.5),这些也许会混淆站点,或者完全不工作。浏览器区别自身的方式是通过User-Agent头。当你建立一个Request对象时,你可以加入一个头字典。接下来的这个例子和上面的请求一样,不过它把自己定义为IE的一个版本。
import urllib
import urllib2
url = ''
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
values = {'name' : 'Michael Foord',
'location' : 'Northampton',
'language' : 'Python' }
headers = { 'User-Agent' : user_agent }
data = urllib.urlencode(values)
req = urllib2.Request(url, data, headers)
response = urllib2.urlopen(req)
the_page = response.read()