1. 程式人生 > 實用技巧 >下載所有新東方在太原的英語講師照片

下載所有新東方在太原的英語講師照片

# 

import requests
from bs4 import BeautifulSoup
import shutil
import string
import os


def get_img_url(url):
    img_url = []
    while True:
        resp = requests.get(url)
        soup = BeautifulSoup(resp.text, 'lxml')

        for dl in soup.select('dl[class="tea_list fix"]'):
            if
'英語' in dl.select('p[class="h20"]')[0].text: img_url.append([dl.select('img[id="imgNewLogoUrl"]')[0].get('title').strip(), dl.select('img[id="imgNewLogoUrl"]')[0].get('src')]) if soup.select('a[class="nextlink"]'): url = 'http://souke.xdf.cn
' + soup.select('a[class="nextlink"]')[0].get('href') else: print('跳出') break return img_url def get_img(url,fn): resp = requests.get(url, stream=True) #預設情況下是false,他會立即開始下載檔案並存放到記憶體當中, #倘若檔案過大就會導致記憶體不足的情況. #當把get函式的stream引數設定成True時,它不會立即開始下載, #需要注意一點:檔案沒有下載之前,它也需要保持連線。 with open(
'頭像\{}.png'.format(fn), 'wb') as out_file: shutil.copyfileobj(resp.raw, out_file) #從類檔案物件src到類檔案對dst。可選引數length指定緩衝區的大小, #負數表示一次性讀入。預設會把資料切分成小塊拷貝,以免佔用太多記憶體 del resp if __name__ == '__main__': os.mkdir("頭像") url_h = 'http://souke.xdf.cn/Teacher/21.html?teacherCode={}&pagesize=50' for letter in list(string.ascii_uppercase): #產生A-Z個字母,然後轉化為列表 print('page: ', letter) for name, url in get_img_url(url_h.format(letter)): #上一行程式碼將表明了,教師的排序是根據大寫英文字母由低到高進行的。 get_img(url, name) print('Done')