1、
import urllib
url = "http://www.163.com/"
html = urllib.urlopen(url)
content = html.read().decode("gbk","ignore").encode("utf-8")
print content
如果网站的编码是GBK或者是其他的字符集,但是网站中出现的一些特殊字符并没有在这些字符集中,这样的话显示的时候就会出现乱码。在decode上加上ignore就会忽略一些不能转化的特殊字符,避免转化出错。
2、urllib.urlretrieve()这个下载函数的具体信息如下
urlretrieve(url, filename=None, reporthook=None, data=None)
可以看出,函数的使用需要三个参数,第一个是要下载的网页地址,是字符串的形式。第二个参数,是我们要保存下载东西的本地路径+文件名(最好使用绝对路径),第三个参数是一个函数,这个函数的行为你可以任意定义,但是函数必须要有三个参数
def callback(a, b, c):
"""
@a是到目前为止传递数据块的数量
@b是传递的每个数据块的大小,单位是字节
@远程文件的大小
3、爬虫网站页面源码demo
#coding=utf-8
import urllib #导入模块
def callback(a, b, c):
"""
@a是到目前为止传递数据块的数量
@b是传递的每个数据块的大小,单位是字节
@远程文件的大小
"""
download_progress = a * b * 100.0 / c #计算每一次数据块的下载进度
if download_progress > 100: #如果进度大于100那么就赋值为100
download_progress = 100
print "%.2lf%%" % download_progress,
#用格式化控制输出,%.2lf是在输出download_progress的时候保留两位小数,以双进度实数类型输出,因为%在print中有特殊的作用
#属于格式控制符,所以要想输出%,则要打两个%,这样的话,每次下载一个数据块的同时就会执行这个回调函数一次,相应的到目前为止的下载进度也会显示
url = "http://www.iplaypython.com/" #选择要爬虫的网址
download_adress = "F:\\recover\\2014.3-2014.6\\python pachong\\download data\\python.html" #要保存的本地路径+文件名
urllib.urlretrieve(url, download_adress, callback) #下载url这个页面的内容,同时执行callback函数