下載所有新東方在太原的英語講師照片
阿新 • • 發佈:2020-07-16
# 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')