繼續...基礎框架搭好了,下面來正式的來乙個專案吧
behance
全球設計師的作品展示平台
就從這拉幾張圖吧,具體的網頁解析方式網上有很多,在此略過,我已經取出了一些位址,儲存在了list.txt裡,這次就用這些吧。
即asyncio
框架則用了aiohttp
問題這裡可以在程式啟動的時候設定乙個配置列表cfg
from os import path as ospath, getcwd, mkdir
...def __init__(self):
...self.cfg = self.initcfg()
def initcfg(self):
cfg = {}
# **,沒有可不用設定
# cfg['proxies'] = '127.0.0.1:61274'
# 載入列表
filename = "list.txt"
if ospath.exists(filename):
with open(filename, "r") as f:
cfg['piclist'] = f.read().strip().split("\n")
# 設定的儲存位置
current_folder = getcwd()
cfg['pic_temp'] = ospath.join( current_folder, 'pic_temp')
if not ospath.isdir( cfg['pic_temp'] ):
mkdir(cfg['pic_temp'])
return cfg
然後傳遞給服務程序就可以了
p = process(target = startservicep, args = ( self.guiqueue, self.servicequeue, self.cfg ))
先來修改一下html的內容,新增乙個自定義控制項,用來存放:
在服務程序serviceevent
裡新增乙個方法getpicbylist()
def getpicbylist(self, msg):
# 為建立佔位圖
# 先建立5個佔位圖
html = ''
imgidlist =
time_now = ''
for i in range(0, 5):
time_now = '-'.join( ( str(i), str(time()) ) )
# 儲存的id
html += self.html % ( time_now )
self.__putgui('creatplaceholderimg', html)
return imgidlist
之後就到了動態建立協程的部分了
def __run_coroutine_threadsafe(self, data, _guirecvmsgdict):
asyncio.run_coroutine_threadsafe(self.dld.stream_download(
data,
_guirecvmsgdict
), self.new_loop)
但在正式介紹run_coroutine_threadsafe()
之前,我們需要先開啟乙個協程迴圈
但我們已經開啟了乙個用於處理佇列的迴圈了,沒辦法再開乙個(也不排除是咱太菜),於是另開了乙個執行緒專來處理協程
class serviceevent(object):
'''服務程序'''
def __init__(self, _guiqueue, cfg):
...# 主線程中建立乙個事件迴圈
# 啟動乙個執行緒,傳遞主線程中建立的事件迴圈
t = thread(target=self.start_loop, args=(self.loop,))
t.setdaemon(true) # 設定子執行緒為守護執行緒
t.start()
def start_loop(self, loop):
# 啟動事件迴圈
# 儲存到本地
if not ospath.isfile(d['fpath']):
with open(d['fpath'], 'ab') as file:
while true:
chunk = await response.content.read(1024)
if not chunk:
break
file.write(chunk)
self.guirecvmsg.put(_guirecvmsgdict)
except asyncio.timeouterror:
pass
最後,主程序獲得的id及路徑,顯示到視窗中
function setimgbg( d )"]);
if(div)
}
原始碼
總結:完成這個專案使用了
相對乙個單純的爬蟲指令碼來說,還是有點複雜的,尤其是互動,難怪這麼多人不願意寫介面...
雖然還有不足,但本次專案的內容就到這了。
謝謝。
Python3結合Dlib實現人臉識別和剪下
利用python開發,借助dlib庫進行人臉識別,然後將檢測到的人臉剪下下來,依次排序顯示在新的影象上 實現的效果如下圖所示,將圖1原圖中的6張人臉檢測出來,然後剪下下來,在影象視窗中依次輸出顯示人臉 實現比較簡單,量也比較少,適合入門或者興趣學習。圖1 原圖和處理後得到的影象視窗 python 3...
python3 切片 python3 切片
取乙個list或tuple的部分元素是非常常見的操作。比如,乙個list如下 l michael sarah tracy bob jack 取前3個元素,應該怎麼做?笨辦法 l 0 l 1 l 2 michael sarah tracy 之所以是笨辦法是因為擴充套件一下,取前n個元素就沒轍了。取前n...
python3安裝 Python3的安裝
1.anaconda安裝 2.安裝包安裝 3.linux下的命令列安裝 centos red hat 1 sudo yum install y sudo yum update3 sudo yum install y python35u python35u libs python35u devel p...