加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

多线程抓网站图片

发布时间:2020-12-17 17:28:07 所属栏目:Python 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 if __name__ == '__main__':for page in range(sPage,ePage+1):# 下载的page范围print ''*40+(' Page %d ' % page)+''*40urlPage = urlRoot+'/p01/lis

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

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: ',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)

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读