摘要:最近稿定设计这个站点挺火,设计组的大哥一直在提,啊,这个好,这个好。目的是给设计组大哥提供素材参考,毕竟做设计的可不能抄袭哦思路枯竭的时候,借鉴一下还凑合。看了一眼设计大哥的头发,我觉得够他用一年了。
最近【稿定设计】这个站点挺火,设计组的大哥一直在提,啊,这个好,这个好。
机智的我,思考了一下,决定给他采集一些公开素材,以后跟设计对线的时候,肯定要卖个人情。
本次要采集的站点是:https://sucai.gaoding.com/plane/materials,高清图肯定不能采集啦,仅采集 1080 P 的缩略图。
目的是给设计组大哥提供素材参考,毕竟做设计的可不能抄袭哦(思路枯竭的时候,借鉴一下还凑合)。
目标站点的筛选项非常“贴心”的提供“全部”这一选项,省的我们拼凑分类了。
在查阅分页的时候,发现稿定设计网站仅开放了 100 页数据,每页 100 条,也就是咱只能获取到 10000 张图片。
看了一眼设计大哥的头发,我觉得够他用一年了。
页面 URL 跳转链接规则如下:
https://sucai.gaoding.com/plane/materials?p=1https://sucai.gaoding.com/plane/materials?p=100
但是数据的请求链接为下述规则:
https://api-sucai.gaoding.com/api/search-api/sucai/templates/search?q=&sort=&colors=&styles=&filter_id=1617130&page_size=100&page_num=1https://api-sucai.gaoding.com/api/search-api/sucai/templates/search?q=&sort=&colors=&styles=&filter_id=1617130&page_size=100&page_num=2
参数说明
q
:搜索的关键字,为空即可;sort
:排序规则,可空;colors
和 styles
:颜色和风格, 保持空;filter_id
:过滤 ID,保持全部应该是 1617130
;page_size
:获取的每页数据量;page_num
:页码,该值最大为 100。有了上述分析之后,就可以进行编码工作了。
在正式编码前,先通过一张图整理逻辑,该案例依旧为生产者与消费者模式爬虫,采用 threading 模块
与 queue
队列模块实现。
理解上图之后,就可以编写下述代码了,重点部分在注释中体现,本次采用类写法,学习的时候需要特别注意一下。
import requestsfrom queue import Queueimport randomimport threadingimport timedef get_headers(): user_agent_list = [ "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1" "Mozilla/5.0 (X11; CrOS i686 2268.111.0) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11", "其它UA,自行查找即可" ] UserAgent = random.choice(user_agent_list) headers = {"User-Agent": UserAgent,"referer": "https://sucai.gaoding.com/"} return headers# 生产者线程class Producer(threading.Thread): def __init__(self, t_name, queue): threading.Thread.__init__(self, name=t_name) self.data = queue # 测试爬取 3 页,实际采集的时候,可以放大到100页 def run(self): # 测试数据,爬取3页 for i in range(1,3): print("线程名: %s,序号:%d, 正在向队列写入数据 " % (self.getName(), i)) # 拼接URL地址 url = "https://api-sucai.gaoding.com/api/search-api/sucai/templates/search?q=&sort=&colors=&styles=&filter_id=1617130&page_size=100&page_num={}".format(i) res = requests.get(url=url,headers=get_headers(),timeout=5) # 这里可以增加 try catch 验证,防止报错 if res: data = res.json() # JSON 提取数据 for item in data: title = item["title"] img_url = item["preview"]["url"] self.data.put((title,img_url)) print("%s: %s 写入完成!" % (time.ctime(), self.getName()))# 消费者线程class Consumer(threading.Thread): def __init__(self, t_name, queue): threading.Thread.__init__(self, name=t_name) self.data = queue def run(self): while True: # 从队列获取数据 val = self.data.get() if val is not None: print("线程名:%s,正在读取数据:%s" % (self.getName(), val)) title,url = val # 请求图片 res = requests.get(url=url,headers=get_headers(),timeout=5) if res: # 保存图片 with open(f"./imgs/{title}.png","wb") as f: f.write(res.content) print(f"{val}","写入完毕")# 主函数def main(): queue = Queue() producer = Producer("生产者", queue) consumer = Consumer("消费者", queue) producer.start() consumer.start() producer.join() consumer.join() print("所有线程执行完毕")if __name__ == "__main__": main()
生产者线程用于产生图片地址,存放到队列 queue
中,消费者线程通过一个“死循环”不断从队列中,获取图片地址,然后进行下载。
代码运行效果如下图所示:
代码仓库地址:https://codechina.csdn.net/hihell/python120,去给个关注或者 Star 吧。
你需要的 10000 张设计参考图下载地址
数据没有采集完毕,想要的可以在评论区留言交流
今天是持续写作的第 211 / 365 天。
可以关注我,点赞我、评论我、收藏我啦。
更多精彩
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/119316.html
摘要:一般用进程池维护,的设为数量。多线程爬虫多线程版本可以在单进程下进行异步采集,但线程间的切换开销也会随着线程数的增大而增大。异步协程爬虫引入了异步协程语法。 Welcome to the D-age 对于网络上的公开数据,理论上只要由服务端发送到前端都可以由爬虫获取到。但是Data-age时代的到来,数据是新的黄金,毫不夸张的说,数据是未来的一切。基于统计学数学模型的各种人工智能的出现...
摘要:学习笔记七数学形态学关注的是图像中的形状,它提供了一些方法用于检测形状和改变形状。学习笔记十一尺度不变特征变换,简称是图像局部特征提取的现代方法基于区域图像块的分析。本文的目的是简明扼要地说明的编码机制,并给出一些建议。 showImg(https://segmentfault.com/img/bVRJbz?w=900&h=385); 前言 开始之前,我们先来看这样一个提问: pyth...
摘要:会解释怎样使用逻辑回归,随机森林,和自动化脚本,但都不会深入。这使我在纽约地区积累了超过名粉丝,并且仍在快速增长。我收集了个帐户,这些帐户发布了许多关于纽约的优质图片。以下面这两篇帖子为例这两个帖子来自同一个纽约的帐户。 showImg(https://segmentfault.com/img/remote/1460000019393373); 在家做饭不下馆子可以减少开支已经是公开的...
摘要:爱美之心人皆有之,正所谓窈窕淑女君子好逑,美好敲代码的一天从好看的桌面壁纸开始,好看的桌面壁纸从美女壁纸开始。 大家好,我是辣条,这是我爬虫系列的第26篇。 爱美之心人皆有之,正所谓窈窕淑女君子好逑,美好敲代码的一天从好看的桌面壁纸开始,好看的桌面壁纸从美女壁纸开始。今天给大家带来福利啦,爬...
阅读 1671·2021-10-09 09:44
阅读 3239·2021-09-27 13:36
阅读 1487·2021-09-22 15:33
阅读 1256·2021-09-22 15:23
阅读 1146·2021-09-06 15:02
阅读 1657·2019-08-29 16:14
阅读 2879·2019-08-29 15:26
阅读 2385·2019-08-28 18:08