|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 南归 于 2021-5-20 10:57 编辑
来论坛这么久了还没发过正经的帖子,把练手的多线程代码发一下,请大家指教
win10测试可用,运行后在电脑桌面会生成一个txpic文件夹
- # V1.0
- """
- 文件 :pic_down.py
- 时间 :2021/02/02 20:54:39
- """
- import requests
- import re
- import os
- import winreg
- import threading
- import queue
- headers = {
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36"
- }
- def get_directory(): # 判断路径是否存在,否的话生成
- global path
- key = winreg.OpenKey(
- winreg.HKEY_CURRENT_USER,
- r"Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders",
- )
- path = winreg.QueryValueEx(key, "Desktop")[0] + "\\txpic\\"
- print(path)
- if not os.path.exists(path):
- os.mkdir(path)
- def pic_down(url):
- # 动漫
- first_response = requests.get(url=url, headers=headers)
- pic_urllist = re.findall(r'"thumb": "(.*?)",', first_response.text)
- id_list = re.findall(
- r"http://img6.dl.ltimg.net/(.*?)\?auth_key=", first_response.text
- )
- name_dict = dict(zip(pic_urllist, id_list))
- for pic_url in pic_urllist:
- final_response = requests.get(url=pic_url, headers=headers)
- name = name_dict[pic_url]
- with open(path + name + ".jpg", "wb") as f:
- f.write(final_response.content)
- # return pic_url
- if __name__ == "__main__":
- get_directory()
- q = queue.Queue()
- for i in range(1, 100): # 构造网站队列
- url = r"http://service.picasso.adesk.com/v1/avatar/avatar?limit=30&skip={}&adult=false&first=0&order=time".format(
- i * 30
- )
- q.put(url)
- while not q.empty():
- for i in range(5):
- try:
- t = threading.Thread(
- target=pic_down, args=(q.get(block=False),)
- ) # ! 堵塞?
- t.start()
- except: # *未知错误
- pass
复制代码
|
评分
-
查看全部评分
|