[Python] 纯文本查看 复制代码 '''本代码仅供学习参考,如线程数太高,频繁下载等种种情况,对网站产生的后果,由你自己自己负责哦'''
import os, re, requests
import time
from concurrent.futures import ThreadPoolExecutor
# 线程数,不要太高,对网站温柔一点
NBi = 5
headers = {
# 'Referer': 'https://www.9eip.com/acheng/bizhi/',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.88 Safari/537.36'
}
def start_requests(fenlei, page):
# feilei 是选择需要下载类目的ID(我是这么理解的),page 是页数,通过从每一页里提取图片名
url = f'https://www.9eip.com/acheng/bizhi/api.php?cid={fenlei}&start=0&count={page + 1}'
response = requests.get(url=url, headers=headers)
# 获取图片下载名和后缀
get_img_id = re.findall((r'"url":.*?85.*?/(.*?)","'), (response.text), re.I)[page]
# 由于网页代码里没有看到1080的,所以强行加了一个,如果需要1920 X 1080 的朋友,可以把这个注释打开,下面的注释掉
# more_large_img = 'http://p3.qhimg.com/bdm/1920_1080_85/' + get_img_id
# 获取更大尺寸
more_large_img = 'http://p0.qhimg.com/bdr/__85/' + get_img_id
response.close()
return get_img_id, more_large_img
def save_img(img_folder_name, page):
# 在d 盘创建文件夹,可以修改此处,自定义存储位置
path = 'd://desktop/爬虫图库/' + img_folder_name + '/'
if not os.path.exists(path):
os.mkdir(path)
# 我的立即就是分配名称和名字,, 6 是这个类目的 id(我是这么理解的)
name, url = start_requests(6, page)
# 图片存储路径
img_save_path = path + name
# 获取图片下载地址
res = requests.get(url=url, headers=headers).content
with open(img_save_path, 'wb') as f: # 存储图片
f.write(res) # 写入图片
print(name + ' >>>>>>>>>>>>>>>>>>>> 下载完成')
f.close()
def main():
with ThreadPoolExecutor(max_workers=NBi) as executor:
# 由于能力有限,不知道应该怎么获取总页数,所以就自己弄了一个页数出来,,,,
for ss in range(0, 220):
print(f'............正在下载第{ss + 1}页............')
executor.submit(save_img, '美女模特', ss)
time.sleep(0.5) # 给服务器休息休息,
if __name__ == '__main__':
main()
|