记录维维的每一篇Hello World

3.jpg

需要用到的库

  1. import re
  2. import requests
  3. import tqdm
  4. import os
  5. import threading
  6. import time
  7. import itertools

完整源码

  1. import re
  2. import requests
  3. import tqdm
  4. import os
  5. import threading
  6. import time
  7. import itertools
  8. name = itertools.count(1)
  9. class Thread(threading.Thread):
  10. def __init__(self, function, parameter, delayed: int = 0):
  11. threading.Thread.__init__(self)
  12. # self.threadID = threadID
  13. self.function = function
  14. self.parameter = parameter
  15. self.delayed = delayed
  16. def run(self):
  17. time.sleep(self.delayed)
  18. self.function(self.parameter)
  19. def get_pic(parameter):
  20. file_path = os.path.join(parameter[1], str(name.__next__()) + '.jpg')
  21. with open(file_path, 'wb') as f:
  22. f.write(requests.get(parameter[0]).content)
  23. # print("已完成")
  24. def get_url(text):
  25. init_path = "D:\\AppData\\picture"
  26. if not os.path.exists(init_path):
  27. os.mkdir(init_path)
  28. num = str(len(os.listdir(init_path)) + 1)
  29. now_path = os.path.join(init_path, num)
  30. os.mkdir(now_path)
  31. url_video_list = re.findall('http[s]?://[a-zA-Z0-9./_]*', text)
  32. headers = {
  33. "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
  34. "Chrome/99.0.4844.51 Safari/537.36 Edg/99.0.1150.30",
  35. }
  36. if len(url_video_list) == 0:
  37. print("."*20)
  38. return
  39. result = []
  40. for url_video in tqdm.tqdm(url_video_list, desc="正在获取图片链接"):
  41. html = requests.get(url=url_video, headers=headers).text
  42. pattern = re.compile('http[s]?://[a-zA-Z0-9./_]*?_[0-9][0-9]?.jpg')
  43. pic_url_list = re.findall(pattern, html)
  44. result.extend(pic_url_list[1:])
  45. os.startfile(now_path)
  46. for pic_url in result:
  47. Thread(function=get_pic, parameter=(pic_url, now_path)).start()
  48. time.sleep(0.1)
  49. if __name__ == '__main__':
  50. get_url(input("输入内容:"))

使用示例

image.png

注意事项

1、本示例使用多线程下载图片,在网速支持的情况可以实现秒完成

2、获取图片链接的过程使用的是循环,比较缓慢(可以使用多线程完成此过程)

4、复制链接可以是多个,未经过提取的原文本

4、默认路径为”D:\AppData\picture”(可自行更改)

5、无需担心文件会冲突,在不随意更改的情况下会自动避开

python环境

电脑:Windows10

python:3.10.4