摘要:最近稿定設計這個站點挺火,設計組的大哥一直在提,啊,這個好,這個好。目的是給設計組大哥提供素材參考,畢竟做設計的可不能抄襲哦思路枯竭的時候,借鑒一下還湊合。看了一眼設計大哥的頭發,我覺得夠他用一年了。
最近【稿定設計】這個站點挺火,設計組的大哥一直在提,啊,這個好,這個好。
機智的我,思考了一下,決定給他采集一些公開素材,以后跟設計對線的時候,肯定要賣個人情。
本次要采集的站點是: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 天。
可以關注我,點贊我、評論我、收藏我啦。
更多精彩
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/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篇。 愛美之心人皆有之,正所謂窈窕淑女君子好逑,美好敲代碼的一天從好看的桌面壁紙開始,好看的桌面壁紙從美女壁紙開始。今天給大家帶來福利啦,爬...
閱讀 1706·2021-10-09 09:44
閱讀 3267·2021-09-27 13:36
閱讀 1526·2021-09-22 15:33
閱讀 1281·2021-09-22 15:23
閱讀 1167·2021-09-06 15:02
閱讀 1704·2019-08-29 16:14
閱讀 2910·2019-08-29 15:26
閱讀 2412·2019-08-28 18:08