前言嗨喽!大家好呀,这里是魔王~
""" 目标网站: 内容:图片 """
# 分金定穴 --- 分析网站 # 数据加载: # 静态加载 # 动态加载 json # -关键字 # -页码 import json import urllib.parse import requests # 网络请求库 pip import jsonpath # json数据解析库
import threading
#设置最大线程锁 thread_lock = threading.BoundedSemaphore(value=20)
# 1. 通过url获取json数据
def get_page(url): resp = requests.get(url) page = resp.content.decode('utf-8') # 防止乱码
return page
def pages_from_duitang(kw): base_url = '' pages = [] label = urllib.parse.quote(kw) for index in range(0,3600,24): # 0 24 48 72 96 url = base_url.format(label,index) page = get_page(url) pages.append(page)
return pages
# 2. 获取json数据所有的图片链接
def findall_url(page): # 类型转换 html = json.loads(page) photos = jsonpath.jsonpath(html, "$..path")
return photos
def pic_url_from_pages(pages): pic_url = []
for page in pages: photos = findall_url(page) pic_url.extend(photos)
return pic_url
# 3. 保存图片 def pic_download(url, n): r = requests.get(url) path = r'C:\Users\1234\Desktop\新建文件夹\%s.jpg' % n with open(path, 'wb') as f: f.write(r.content)
# 下载完了 解锁 thread_lock.release()
pages = pages_from_duitang('美女') pic_url = pic_url_from_pages(pages)
n = 0 for i in pic_url: # pic_download(i, n) n += 1 print('正在下载第{}张图片'.format(n)) # 上锁 thread_lock.acquire()
t = threading.Thread(target=pic_download,args=(i,n)) t.start()
尾语好了,我的这篇文章写到这里就结束啦! 有更多建议或问题可以评论区或私信我哦!一起加油努力叭(ง ·_·)ง 喜欢就关注一下博主,或点赞收藏评论一下我的文章叭!!!
|