爬蟲下載新增進度條
阿新 • • 發佈:2019-01-02
def report(count, blockSize, totalSize):
percent = int(count*blockSize*100/totalSize)
sys.stdout.write("\r%d%%" % percent + ' complete')
sys.stdout.write('[%-50s] %s'%( '=' * int(math.floor(count*blockSize*50/totalSize)),percent))
sys.stdout.flush()
urlretrieve(url,'{}/第{}節.mp4'.format(self.BASE_PATH,i),reporthook=report)
[%-50s]表示50個佔位符 炫酷吧!
print('[%-50s]'%('='*25))
/usr/bin/python /home/pipidi/learngit/lianjia/lianjia/spiders/aa.py
[========================= ]
Process finished with exit code 0
佔位符的神奇用法!
--------------------2/21-------------------------------------------------------------------------------
因為不瞭解reporthook的用法所以我繼續寫了一些例子:
def myReportHook(count, blockSize, totalSize):
print count, blockSize, totalSize
>>> import urllib
>>>
urllib.urlretrieve('http://personalpages.tds.net/~kent37/Python/PythonResources.html',
reporthook=myReportHook)
0 8192 7955
1 8192 7955
2 8192 7955
This result surprised me at first - why is it reading three blocks? But the first line is output _before_ any blocks are read (count=0); the second line is the actual read, and the third line is the failed read that ends the operation. If you look at the code for urllib.urlretrieve(), you see that it calls report hook for each attempted read, so it will always get an extra call at the end.
大體意思是第一行是開始連結,第二行是下載,第三行是結束