python爬虫初学(2)

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函数


定义的回调函数,显示进度条可以自己修改效果:







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值