摘要:最近稿定設(shè)計(jì)這個(gè)站點(diǎn)挺火,設(shè)計(jì)組的大哥一直在提,啊,這個(gè)好,這個(gè)好。目的是給設(shè)計(jì)組大哥提供素材參考,畢竟做設(shè)計(jì)的可不能抄襲哦思路枯竭的時(shí)候,借鑒一下還湊合??戳艘谎墼O(shè)計(jì)大哥的頭發(fā),我覺得夠他用一年了。
最近【稿定設(shè)計(jì)】這個(gè)站點(diǎn)挺火,設(shè)計(jì)組的大哥一直在提,啊,這個(gè)好,這個(gè)好。
機(jī)智的我,思考了一下,決定給他采集一些公開素材,以后跟設(shè)計(jì)對(duì)線的時(shí)候,肯定要賣個(gè)人情。
本次要采集的站點(diǎn)是:https://sucai.gaoding.com/plane/materials,高清圖肯定不能采集啦,僅采集 1080 P 的縮略圖。
目的是給設(shè)計(jì)組大哥提供素材參考,畢竟做設(shè)計(jì)的可不能抄襲哦(思路枯竭的時(shí)候,借鑒一下還湊合)。
目標(biāo)站點(diǎn)的篩選項(xiàng)非?!百N心”的提供“全部”這一選項(xiàng),省的我們拼湊分類了。
在查閱分頁的時(shí)候,發(fā)現(xiàn)稿定設(shè)計(jì)網(wǎng)站僅開放了 100 頁數(shù)據(jù),每頁 100 條,也就是咱只能獲取到 10000 張圖片。
看了一眼設(shè)計(jì)大哥的頭發(fā),我覺得夠他用一年了。
頁面 URL 跳轉(zhuǎn)鏈接規(guī)則如下:
https://sucai.gaoding.com/plane/materials?p=1https://sucai.gaoding.com/plane/materials?p=100
但是數(shù)據(jù)的請(qǐng)求鏈接為下述規(guī)則:
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
參數(shù)說明
q
:搜索的關(guān)鍵字,為空即可;sort
:排序規(guī)則,可空;colors
和 styles
:顏色和風(fēng)格, 保持空;filter_id
:過濾 ID,保持全部應(yīng)該是 1617130
;page_size
:獲取的每頁數(shù)據(jù)量;page_num
:頁碼,該值最大為 100。有了上述分析之后,就可以進(jìn)行編碼工作了。
在正式編碼前,先通過一張圖整理邏輯,該案例依舊為生產(chǎn)者與消費(fèi)者模式爬蟲,采用 threading 模塊
與 queue
隊(duì)列模塊實(shí)現(xiàn)。
理解上圖之后,就可以編寫下述代碼了,重點(diǎn)部分在注釋中體現(xiàn),本次采用類寫法,學(xué)習(xí)的時(shí)候需要特別注意一下。
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# 生產(chǎn)者線程class Producer(threading.Thread): def __init__(self, t_name, queue): threading.Thread.__init__(self, name=t_name) self.data = queue # 測(cè)試爬取 3 頁,實(shí)際采集的時(shí)候,可以放大到100頁 def run(self): # 測(cè)試數(shù)據(jù),爬取3頁 for i in range(1,3): print("線程名: %s,序號(hào):%d, 正在向隊(duì)列寫入數(shù)據(jù) " % (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 驗(yàn)證,防止報(bào)錯(cuò) if res: data = res.json() # JSON 提取數(shù)據(jù) 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()))# 消費(fèi)者線程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: # 從隊(duì)列獲取數(shù)據(jù) val = self.data.get() if val is not None: print("線程名:%s,正在讀取數(shù)據(jù):%s" % (self.getName(), val)) title,url = val # 請(qǐng)求圖片 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}","寫入完畢")# 主函數(shù)def main(): queue = Queue() producer = Producer("生產(chǎn)者", queue) consumer = Consumer("消費(fèi)者", queue) producer.start() consumer.start() producer.join() consumer.join() print("所有線程執(zhí)行完畢")if __name__ == "__main__": main()
生產(chǎn)者線程用于產(chǎn)生圖片地址,存放到隊(duì)列 queue
中,消費(fèi)者線程通過一個(gè)“死循環(huán)”不斷從隊(duì)列中,獲取圖片地址,然后進(jìn)行下載。
代碼運(yùn)行效果如下圖所示:
代碼倉(cāng)庫(kù)地址:https://codechina.csdn.net/hihell/python120,去給個(gè)關(guān)注或者 Star 吧。
你需要的 10000 張?jiān)O(shè)計(jì)參考圖下載地址
數(shù)據(jù)沒有采集完畢,想要的可以在評(píng)論區(qū)留言交流
今天是持續(xù)寫作的第 211 / 365 天。
可以關(guān)注我,點(diǎn)贊我、評(píng)論我、收藏我啦。
更多精彩
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/119316.html
摘要:一般用進(jìn)程池維護(hù),的設(shè)為數(shù)量。多線程爬蟲多線程版本可以在單進(jìn)程下進(jìn)行異步采集,但線程間的切換開銷也會(huì)隨著線程數(shù)的增大而增大。異步協(xié)程爬蟲引入了異步協(xié)程語法。 Welcome to the D-age 對(duì)于網(wǎng)絡(luò)上的公開數(shù)據(jù),理論上只要由服務(wù)端發(fā)送到前端都可以由爬蟲獲取到。但是Data-age時(shí)代的到來,數(shù)據(jù)是新的黃金,毫不夸張的說,數(shù)據(jù)是未來的一切。基于統(tǒng)計(jì)學(xué)數(shù)學(xué)模型的各種人工智能的出現(xiàn)...
摘要:學(xué)習(xí)筆記七數(shù)學(xué)形態(tài)學(xué)關(guān)注的是圖像中的形狀,它提供了一些方法用于檢測(cè)形狀和改變形狀。學(xué)習(xí)筆記十一尺度不變特征變換,簡(jiǎn)稱是圖像局部特征提取的現(xiàn)代方法基于區(qū)域圖像塊的分析。本文的目的是簡(jiǎn)明扼要地說明的編碼機(jī)制,并給出一些建議。 showImg(https://segmentfault.com/img/bVRJbz?w=900&h=385); 前言 開始之前,我們先來看這樣一個(gè)提問: pyth...
摘要:會(huì)解釋怎樣使用邏輯回歸,隨機(jī)森林,和自動(dòng)化腳本,但都不會(huì)深入。這使我在紐約地區(qū)積累了超過名粉絲,并且仍在快速增長(zhǎng)。我收集了個(gè)帳戶,這些帳戶發(fā)布了許多關(guān)于紐約的優(yōu)質(zhì)圖片。以下面這兩篇帖子為例這兩個(gè)帖子來自同一個(gè)紐約的帳戶。 showImg(https://segmentfault.com/img/remote/1460000019393373); 在家做飯不下館子可以減少開支已經(jīng)是公開的...
摘要:愛美之心人皆有之,正所謂窈窕淑女君子好逑,美好敲代碼的一天從好看的桌面壁紙開始,好看的桌面壁紙從美女壁紙開始。 大家好,我是辣條,這是我爬蟲系列的第26篇。 愛美之心人皆有之,正所謂窈窕淑女君子好逑,美好敲代碼的一天從好看的桌面壁紙開始,好看的桌面壁紙從美女壁紙開始。今天給大家?guī)砀@?,?..
閱讀 1728·2021-10-09 09:44
閱讀 3291·2021-09-27 13:36
閱讀 1549·2021-09-22 15:33
閱讀 1305·2021-09-22 15:23
閱讀 1193·2021-09-06 15:02
閱讀 1722·2019-08-29 16:14
閱讀 2934·2019-08-29 15:26
閱讀 2438·2019-08-28 18:08