清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>
if __name__ == '__main__': for page in range(sPage,ePage+1): # 下载的page范围 print '>'*40+(' Page %d ' % page)+'<'*40 urlPage = urlRoot+'/p01/list_%d.html' % page # page页的url for i in range(downCount): # 每页下载的幅度 print '>'*38+(' Down Count %d ' % i)+'<'*38 dirPathHtml = os.path.join(sys.path[0],'html',str(page)) # html源码保存的目录 if not os.path.exists(dirPathHtml): # dirPathHtml不存在 os.makedirs(dirPathHtml) # 创建dirPathHtml目录,只会执行一次 pageHtmlFile = os.path.join(dirPathHtml,'%s.html' % str(page)) # page页源码文件的完整路径 if not os.path.exists(pageHtmlFile): # pageHtmlFile不存在 start = time.time() saveHtmlSrc(urlPage, pageHtmlFile) # 下载page页源码保存到pageHtmlFile里 print "Total time: %s" % (time.time() - start) else: # pageHtmlFile已存在 print dirPathHtml childUrlList = getChildUrls(pageHtmlFile, urlRoot) # 获取page页内的子链接列表 if len(childUrlList) > 0: # 有子链接 start = time.time() print 'Files: ',sum([len(files) for root,dirs,files in os.walk(dirPathHtml)]) - 1 # 显示目前已下载的子链接文件数量,减1是为了去掉page页的源码文件(它们是保存在一个目录下的) for childUrl in childUrlList: # 多线程下载子链接的html源码 childHtmlName = childUrl.split('/')[-1] # 子链接.html文件名是一个数字或字母不需要字符集转换 childHtmlFile = os.path.join(dirPathHtml,childHtmlName) # 子链接源码文件的完整路径 cHtml = CatchSaveHtml(childUrl, childHtmlFile) cHtml.start() cHtml.join() print "Total time: %s" % (time.time() - start) for childUrl in childUrlList: # 遍历子链接 childHtmlFile = os.path.join(dirPathHtml,childUrl.split('/')[-1]) # 子链接源码文件的完整路径 if os.path.exists(childHtmlFile): # childHtmlFile存在 imgUrls = getImgUrls(childHtmlFile) # 获取子链接内的图片链接列表 if len(imgUrls) > 0: # 有图片 start = time.time() dirPathPagePic = os.path.join(sys.path[0],'pic',str(page)) # 整个page的图片存放负的根目录 if not os.path.exists(dirPathPagePic): # dirPathPagePic目录不存在 os.makedirs(dirPathPagePic) # 创建dirPathPagePic目录 # dirName = getHtmlTile(childHtmlFile) # 图片的父目录名(来自html的标题title) dirName = urllib2.unquote(str(imgUrls[0].split('/')[-2])).decode('utf-8', 'ignore').encode('gbk', 'ignore') # 图片的父目录名(取的imgUrls列表第一个链接,所有的url链接前半部分是一样的) dirPathImg = os.path.join(dirPathPagePic,dirName) # 图片存放的完整目录 if not os.path.exists(dirPathImg): # dirPathImg不存在 os.makedirs(dirPathImg) # 创建dirPathImg print 'Files: ',sum([len(files) for root,dirs,files in os.walk(dirPathImg)]) # 显示当前子链接内已下载的图片数量 for imgUrl in imgUrls: # 多线程下载子链接内的图片 imgFileName = os.path.join(dirPathImg,str(imgUrl.split("/")[-1])) # 图片文件存放的完整路径名,图片名是一个数字或字母不需要字符集转换 cImg = CatchSaveImg(imgUrl, imgFileName) cImg.start() cImg.join() print "Total time: %s" % (time.time() - start)