一個(gè)簡單的github 500+贊的python項(xiàng)目分析

altify是近些日子在github上了熱門頁的python應(yīng)用,它簡潔而具有創(chuàng)意饱亿。讓我們來學(xué)習(xí)一下蚜退。

Donald Trump wearing a suit and tie 圖像描述效果

痛點(diǎn)

我們知道闰靴,在編寫網(wǎng)頁(html)時(shí),對圖片(img)標(biāo)簽的文本描述(alt)屬性的填寫總是讓人覺得麻煩(實(shí)現(xiàn)更好的SEO)钻注,有沒有什么辦法解決這個(gè)煩惱呢蚂且?有沒有可能讓它不煩人,自動(dòng)化完成呢幅恋?

解決

Altify 以兩百行不到的python代碼實(shí)現(xiàn)了對html文件中的圖片的alt屬性的自動(dòng)生成杏死。 主要是運(yùn)用了微軟提供的深度學(xué)習(xí)圖像識別API來產(chǎn)生圖片相應(yīng)的描述性語言,然后利用該描述性語言自動(dòng)填充待處理的html文件中的圖片屬性捆交。整個(gè)步驟一個(gè)命令就可以完成淑翼,且描述效果很好

效果

分析

  1. 用BeautifulSoup分析要處理的html文件
  2. 找到所有的圖片標(biāo)簽
  3. 使用uploads.im網(wǎng)站的API上傳圖片品追,得到圖片的url玄括,然后使用該url向微軟的API請求,得到圖片的描述性語言肉瓦。(對于圖片寬度小于200px的不予處理)
  4. 填寫html中所有圖片的alt屬性
  5. 將編輯后的html文件保存在原h(huán)tml文件旁邊

整個(gè)代碼主要是三個(gè)函數(shù)

  • def apply(html_file, api_key)
    利用BeautifulSoup分析html文件遭京,修改html中的圖片標(biāo)簽的屬性,將修改后的html保存
    apply 調(diào)用 upload 和 caption 函數(shù)
  • def upload(image_address)
    上傳圖片得到圖片的url和寬度
  • def caption(image_src, api_key)
    請求微軟的api獲取描述性文本

主要使用庫:

  • BeautifulSoup 爬蟲常用的簡便好使的html處理庫泞莉。
  • requests httplib urllib 網(wǎng)絡(luò)請求常用庫哪雕。實(shí)際上只用requests就夠了。
  • argparse 命令行參數(shù)解析庫鲫趁。

其原理簡單斯嚎,邏輯清晰,沒有大難點(diǎn)挨厚。

啟發(fā)

  • 把合適的工具組合起來用于合適的情景中就能產(chǎn)生很好的效果堡僻。
  • 利用現(xiàn)成的API和python簡便的網(wǎng)絡(luò)請求功能以及廣泛的第三方庫,可以實(shí)現(xiàn)很有用的功能幽崩。
  • Python簡潔強(qiáng)大的特性自動(dòng)化方面具有很大的優(yōu)勢苦始。

適用Py3 - 微軟API訪問修改

import json
import requests

api_url = 'http://api.projectoxford.ai/vision/v1.0/describe'
api_key = "d0a6afa1311e4baabd6666692762eaea"
image_src = "http://h.hiphotos.baidu.com/image/h%3D200/sign=9d91b09b6f63f624035d3e03b745eb32/b90e7bec54e736d140a0b7aa9f504fc2d46269e4.jpg" 
# 測試圖片

headers = {
    # Request headers
    'Content-Type': 'application/json',
    'Ocp-Apim-Subscription-Key': api_key,
}

data = {
    # Request parameters
    'maxCandidates': '1',
    "Url": image_src,
}
data = json.dumps(data, separators=(',',':'))

r = requests.post(api_url, data = data, headers = headers)

captioned_data = r.json()['description']['captions'][0]["text"]
# 測試返回為 'a dog sitting in the grass' 

# 此外用py3的話,源碼中的BeautifulSoup函數(shù)刪掉第二個(gè)參數(shù)慌申,并且去掉一些冗余的引用庫

返回?cái)?shù)據(jù)


其它

  • 源碼中使用的Uploads.im 是一個(gè)簡單快速提供圖片上傳服務(wù)的網(wǎng)站陌选,功能類似國內(nèi)的七牛云。
  • 獲取一個(gè)免費(fèi)的微軟機(jī)器視覺服務(wù)的 API Key蹄溉。使用微軟賬戶登錄該網(wǎng)址后就能獲取到Key了咨油。如下圖,在Computer Vision欄里柒爵。

此外可以學(xué)習(xí)的地方

res = 0
# Use this loop to see if a file with the same name exits. If ti does, add a suffix.
while os.path.exists(os.path.dirname(html_file) + "/altify" + str(res) +".html"):
    res+=1
parsed_html = BeautifulSoup(html_data)
parsed_html.prettify()
# 將修改后的html美化后保存
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末役电,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子棉胀,更是在濱河造成了極大的恐慌法瑟,老刑警劉巖冀膝,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異霎挟,居然都是意外死亡窝剖,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進(jìn)店門酥夭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來赐纱,“玉大人,你說我怎么就攤上這事熬北「砻瑁” “怎么了?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵讶隐,是天一觀的道長起胰。 經(jīng)常有香客問我,道長巫延,這世上最難降的妖魔是什么待错? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮烈评,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘犯建。我一直安慰自己讲冠,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布适瓦。 她就那樣靜靜地躺著竿开,像睡著了一般。 火紅的嫁衣襯著肌膚如雪玻熙。 梳的紋絲不亂的頭發(fā)上否彩,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天,我揣著相機(jī)與錄音嗦随,去河邊找鬼屋摔。 笑死舔涎,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播疚颊,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼兴溜!你這毒婦竟也來了却妨?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤盯质,失蹤者是張志新(化名)和其女友劉穎袁串,沒想到半個(gè)月后概而,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡囱修,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年赎瑰,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蔚袍。...
    茶點(diǎn)故事閱讀 37,997評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡乡范,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出啤咽,到底是詐尸還是另有隱情晋辆,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布宇整,位于F島的核電站瓶佳,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏鳞青。R本人自食惡果不足惜霸饲,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望臂拓。 院中可真熱鬧厚脉,春花似錦、人聲如沸胶惰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽孵滞。三九已至中捆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間坊饶,已是汗流浹背泄伪。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留匿级,地道東北人蟋滴。 一個(gè)月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像根蟹,于是被迫代替她去往敵國和親脓杉。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內(nèi)容