import os,requests,html5lib,re,threading
from bs4 import BeautifulSoup
def downloadXXOOimage(startComic,endComic):
pre_url = 'XXX_' #网址隐藏
headers = {"Accept": "text/html,application/xhtml+xml,application/xml;",
"Accept-Encoding": "gzip",
"Accept-Language": "zh-CN,zh;q=0.8",
"Referer": "http://www.example.com/",
"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36"
}
for urlNumber in range(startComic,endComic):
print('已进入%s页面' % (urlNumber)) # 进入目录页
url=pre_url+str(urlNumber)+'.html'
res1 = requests.get(url, headers)
res1.raise_for_status()
soup1 = BeautifulSoup(res1.text, 'html5lib')
comElem1 = soup1.select('div[class="typelist"] > ul li a') # 在目录页查找图片页地址集合
for content_url in comElem1: # 取出当前目录页地址集合的的每张个图片页地址
imgpage_url ='XXX' + content_url.get('href') #网址隐藏
res2 = requests.get(imgpage_url, headers)
res2.raise_for_status()
soup2 = BeautifulSoup(res2.text, 'html5lib')
title = soup2.title.string
title_name = re.findall('(.*?)-', title) # 过滤掉网站名
print('已打开%s页面' % title_name[0]) # 进入图片页地址
path_name = os.path.join("d:\\photo", title_name[0])
os.mkdir(path_name)
os.chdir(path_name)
comElem2 = soup2.select('#view1 img') # 查找图片页地址上的每张图片
for test_url in comElem2: # 取出每张图片的地址
img_url = test_url.get('src')
res3 = requests.get(img_url, headers=headers)
# imgFile = open(cur_path+"\\"+title_name[0]+"\\"+os.path.basename(img_url), 'wb')
imgFile = open(os.path.basename(img_url), 'wb')
print('正在下载%s张图片' % os.path.basename(img_url)) # 进入图片页地址
for chunk in res3.iter_content(10000):
imgFile.write(chunk)
imgFile.close()
downloadThreads =[]
for i in range(1,160,10):
downloadThread=threading.Thread(target=downloadXXOOimage,args=(i,i+9))
downloadThreads.append(downloadThread)
downloadThread.start()
多线程图片爬虫
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 哎,太晚了,有空再写注释 首先是队列文件mongodb_queue的代码,复制卧槽哥的 获取主题页面all_the...
- 批评 Python 的人通常都会说 Python 的多线程编程太困难了,众所周知的全局解释器锁(Global In...
- 这一次分析主要是针对上 分布式爬虫笔记(一)- 非框架实现的Crawlspider 的一次改进,从单机的爬虫改成多...
- 引言 在多线程编程出现之前,电脑程序的运行由一个执行序列组成,执行序列按顺序在主机的CPU中运行。无论是任务本身要...