python網站源碼(公司新來的實習生)

起因最近公司入職許多實習生,都配備瞭筆記本電腦,上周五我路過的時候看到有個男實習生在瀏覽英雄聯盟網站,我以為他在工作時間看遊戲攻略,所以我找來瞭他得組長說瞭這個情況。他組長告訴我,他是一個英雄聯盟遊戲迷,喜歡用英雄皮膚作為桌面背景,當時正在找好看的皮膚作為桌面背景。下班前,我找到瞭他,跟他聊瞭一下我帶團隊的方式,因為多年前的我也是英雄聯盟玩傢,所以我不排斥員工玩遊戲,隻要你工作完成得好,你上班玩遊戲都可以,隻要不被人事或者監管部門的人發現,你隨便。我還是非常樂意維護兄弟們的,前提就是需要你的時候,你能夠頂上去,而不會因為你而導致項目進度延期。在跟他溝通的過程中,發現他在學習有學習過Python,寫過一些爬蟲,因此,我就給他佈置瞭一個任務。讓他用Python實現英雄聯盟官網的全皮膚爬取,他當時還是很懵的,說可以試試。給他佈置這個任務的目的,一是算作一個小懲罰,另外一個也可以變相地瞭解一下他的編碼能力,邏輯思維能力。今天中午他興奮地找到我,說他已經完成瞭,我讓他把源碼發到我的郵箱,我剛才在我本地運行瞭一次。下面是他的效果圖。我花瞭一點時間,看瞭一下代碼,發現他沒有對每個英雄的皮膚進行分類,並且是單線程執行的,所以我就對源碼給稍加改動,Python代碼如下 url = 'https://game.gtimg.cn/images/lol/act/img/js/hero/{}.js'.format(hero_id)
dir_name = 'skins/{}'.format(hero_name)我將每個英雄在skins文件夾下新建一個英雄的文件夾,然後將每個英雄的所有皮膚放在瞭對應的文件夾中。使用多線程的方式去下載皮膚,Python源代碼如下;async def run():
semaphore = asyncio.Semaphore(30)
heroes = hero_list()
tasks = []
for hero in heroes:
tasks.append(asyncio.ensure_future(skins_downloader(semaphore, hero['heroId'], hero['title'])))
await asyncio.wait(tasks)改版後的效果圖Python運行圖所有代碼# -*- coding: utf-8 -*-

import requests
import asyncio
import os
from aiohttp import ClientSession
import aiohttp
import json
from datetime import datetime

async def skins_downloader(semaphore, hero_id, hero_name):
async with semaphore:
url = 'https://game.gtimg.cn/images/lol/act/img/js/hero/{}.js'.format(hero_id)
dir_name = 'skins/{}'.format(hero_name)
if not os.path.exists(dir_name):
os.mkdir(dir_name)
async with ClientSession(connector=aiohttp.TCPConnector(ssl=False)) as session:
async with session.get(url) as response:
response = await response.read()
for skin in json.loads(response)['skins']:
if skin['mainImg']:
img_url = skin['mainImg']
path = os.path.join(dir_name, '{}.jpg'.format(skin['name'].replace('/', ''), ))
async with session.get(img_url) as skin_response:
with open(path, 'wb') as f:
print('\rDownloading [{:^10}] {:<20}'.format(hero_name, skin['name']), end='')
f.write(await skin_response.read())

def hero_list():
return requests.get('https://game.gtimg.cn/images/lol/act/img/js/heroList/hero_list.js').json()['hero']

async def run():
semaphore = asyncio.Semaphore(30)
heroes = hero_list()
tasks = []
for hero in heroes:
tasks.append(asyncio.ensure_future(skins_downloader(semaphore, hero['heroId'], hero['title'])))
await asyncio.wait(tasks)

if __name__ == '__main__':
start_time = datetime.now()
loop = asyncio.get_event_loop()
loop.run_until_complete(run())
loop.close()
end_time = datetime.now()
time_diff = (end_time – start_time).seconds
print('\nTime cost: {}s'.format(time_diff))總結通過這件事情之後,我不知道會不會對這個實習生產生什麼深刻的影響,我隻知道,用自己的技術,來實現自己喜歡的事情是一件非常有成就感的事情。而我,也瞭解到瞭這個實習生的Python能力,無論他的代碼是否是自己獨立完成的還是借助別人完成的。這不重要,重要的是他能夠執行好這個任務,這一點,在工作中非常重要。

本文出自快速备案,转载时请注明出处及相应链接。

本文永久链接: https://www.175ku.com/42126.html