安裝
1.tomorrow安裝,用pip可以直接安裝
pip install tomorrow
單線程
1。以下案例是單線程時候跑的情況,在下載圖片的時候很耗時。
# coding:utf-8
from bs4 import BeautifulSoup
import requests
import os
import time
# 當前腳本所在的目錄
cur_path = os.path.dirname(os.path.realpath(__file__))
def get_img_urls():
r = requests.get("http://699pic.com/sousuo-218808-13-1.html")
fengjing = r.content
soup = BeautifulSoup(fengjing, "html.parser")
# 找出所有的標簽
images = soup.find_all(class_="lazy")
return images
def save_img(imgUrl):
try:
jpg_rl = imgUrl["data-original"]
title = imgUrl["title"]
# print(title)
# print(jpg_rl)
# print("")
# 判斷是否有jpg文件夾,不存在創建一個
save_file = os.path.join(cur_path, "jpg")
if not os.path.exists(save_file): os.makedirs(save_file)
with open(os.path.join(save_file, title+'.jpg'), "wb") as f:
f.write(requests.get(jpg_rl).content)
except:
pass
if __name__ == "__main__":
t1 = time.time()
image_ulrs = get_img_urls()
for i in image_ulrs:
save_img(i)
t2 = time.time()
print("總耗時:%.2f 秒"%(t2-t1))
運行結果:
耗時:4.27 秒
使用多線程tomorrow
1.一行代碼搞定多線程,在函數上加個@threads(5),括號里面代碼線程的數量,數字越大,運行的速度越快
# coding:utf-8
from bs4 import BeautifulSoup
import requests
import os
import time
from tomorrow import threads
# 當前腳本所在的目錄
cur_path = os.path.dirname(os.path.realpath(__file__))
def get_img_urls():
r = requests.get("http://699pic.com/sousuo-218808-13-1.html")
fengjing = r.content
soup = BeautifulSoup(fengjing, "html.parser")
# 找出所有的標簽
images = soup.find_all(class_="lazy")
return images
@threads(5)
def save_img(imgUrl):
try:
jpg_rl = imgUrl["data-original"]
title = imgUrl["title"]
# print(title)
# print(jpg_rl)
# print("")
# 判斷是否有jpg文件夾,不存在創建一個
save_file = os.path.join(cur_path, "jpg")
if not os.path.exists(save_file): os.makedirs(save_file)
with open(os.path.join(save_file, title+'.jpg'), "wb") as f:
f.write(requests.get(jpg_rl).content)
except:
pass
if __name__ == "__main__":
t1 = time.time()
image_ulrs = get_img_urls()
for i in image_ulrs:
save_img(i)
t2 = time.time()
print("總耗時:%.2f 秒"%(t2-t1))
運行結果:
總耗時:0.24 秒
參考github案例:Tomorrow
python自動化交流 QQ群:779429633
