從零開始學爬蟲系列5:老闆,需要特殊服務嗎?

1

前言

網絡爬蟲,爬天爬地爬空氣。

除了常規的下載文字、圖片、音頻這些,還能幹啥?

還能幹的有很多,比如一些「多種多樣」的特殊服務

2

特殊服務

特殊服務,就是那些定製化的 API。

API 的概念也很好理解:

比如你想爬一個網站的數據,你需要分析這個網站,要向哪個 url 發起請求,要向服務器傳遞哪些數據,拿到服務器的返回數據又要怎麼解析出想要的數據。

其實,這個過程,就是在「抽象化」出一個 API。

例如,上篇文章的視頻下載實戰。

對於寫好的「視頻下載程序」而言,輸入就是視頻名,輸出就是下載好的視頻文件。

你可以把「視頻下載程序」叫做一個 API,本質上就是一個完成特定任務的接口

當然,這些所謂的 API,並非網站管理者提供給你的,而是你自己通過寫程序實現的。

這些 API 是需要自己去挖掘,去發現,屬於野生的,可以略帶調侃地稱呼它們爲野生 API。

特殊服務,那可就了不得了

它們不是野生的,而是網站官方提供的官方 API。

這些網站明碼標價,提供着各式各樣定製化服務

比如,這是「聚合數據」提供的一些查詢類 API。

這些常規 API 今天不做討論,咱們玩一些好玩的。

只會網絡爬蟲,也能玩轉所謂的人工智能算法

3

AI 開放平臺

人工智能開放平臺,很多家都有。

比較熟知的,騰訊、百度、京東、Face++ 都提供了 AI 開放平臺。

騰訊 AI 開放平臺:

https://ai.qq.com/

百度 AI 開放平臺:

https://ai.baidu.com/

京東 AI 開放平臺:

http://neuhub.jd.com/

曠視 AI 開放平臺:

https://www.faceplusplus.com.cn/

常見的圖像技術、語音技術、文字識別,這些網站都有提供。

單看服務數量,百度提供的接口最豐富。

單看圖像技術,就眼花繚亂,這麼多服務。

如果看服務質量,那應該各有千秋。比如曠視,人臉相關的技術,應該是比較好,畢竟早些年支付寶的人臉識別技術,都是曠視提供技術支持的,底子在那呢。

4

API 的使用方法

API 使用方法很簡單,只要有爬蟲基礎,完全可以輕鬆應對。

咱們以曠視科技的人臉技術爲例進行測試。

首先,創建一個賬號

然後,找一個想體驗的服務,咱先試試美顏。這年頭,沒有美顏還真不敢上鏡。

曠視科技提供了現成的功能體驗。

美顏美型:

https://www.faceplusplus.com.cn/face-beautify/

分爲美顏和美型,我的理解就是磨皮濾鏡加瘦臉,看一下美顏效果。

左邊是美顏前,右邊是美顏後,拖拽中間的豎欄,可以調節查看。

下面有很多備選圖片,你可以挨個翻牌子,看效果。都不喜歡,也可以點擊自定義,上傳自己想測試的圖片。

這是通過 web 體驗服務,如果想嵌入自己的程序裏,那就需要學習如何使用這個 API 了。

登錄賬號,選擇控制檯,然後創建一個應用,選擇「試用」類型。

填寫一些信息後,就會生成一個 API KeyAPI Secret,這兩個是使用 API 接口要用到的參數。

相當於你的個人賬號和密碼。

在控制檯,有各種服務的使用說明,比如人臉美顏。

Beautify API v2:

https://console.faceplusplus.com.cn/documents/134252584

這個文檔,有詳細的接口描述,根據這些描述,就可以寫代碼。

可以看到請求 POST 請求,圖片可以是以 URL、二進制文件或 base64 編碼上傳。

瞧,這就是我之前提到過的,POST 請求的內容,除了是一些文字內容,還可以是一張圖片。

根據手冊編寫代碼:

import requests
import base64
import json
import cv2
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline


beautify_url = "https://api-cn.faceplusplus.com/facepp/v2/beautify"
# 你創建的應用的 API Key 和 API Secret(也叫 Secret Key)
AK = ''
SK = ''


# 可選參數,不填寫,默認50
# 美白程度 0 - 100
whitening = 80
# 磨皮程度 0 - 100
smoothing = 80
# 瘦臉程度 0 - 100
thinface = 20
# 小臉程度 0 - 100
shrink_face = 50
# 大眼程度 0 - 100
enlarge_eye = 50
# 去眉毛程度 0 - 100
remove_eyebrow = 50
# 濾鏡名稱,不填寫,默認無濾鏡
filter_type = ''


# 二進制方式打開圖片
img_name = 'test_1.png'
f = open(img_name, 'rb')
# 轉 base64
img_base64 = base64.b64encode(f.read())


# 使用 whitening、smoothing、thinface 三個可選參數,其他用默認值
data = {
    'api_key': AK,
    'api_secret': SK,
    'image_base64': img_base64,
    'whitening': whitening,
    'smoothing': smoothing,
    'thinface': thinface,
    }


r = requests.post(url=beautify_url, data=data)
html = json.loads(r.text)


# 解析base64圖片
base64_data = html['result']
imgData = base64.b64decode(base64_data)
nparr = np.frombuffer(imgData, np.uint8)
img_res = cv2.imdecode(nparr, cv2.IMREAD_COLOR)
img_res_BGR = cv2.cvtColor(img_res, cv2.COLOR_RGB2BGR)


# 原始圖片
img = cv2.imread(img_name)
img_BGR = cv2.cvtColor(img, cv2.COLOR_RGB2BGR)


# 顯示圖片
fig, axs = plt.subplots(nrows=1, ncols=2, sharex=False, sharey=False, figsize=(10,10))
axs[0].imshow(img_BGR)
axs[1].imshow(img_res_BGR)
plt.show()

你需要填寫自己的 AK 和 SK,並下載一張圖片。

圖片地址:

https://cuijiahua.com/wp-content/uploads/2020/05/test_1.png

API 接口返回的數據是 base64 的二進制文件,需要解碼,運行結果:

效果還不錯吧!

除了美顏,還有很多服務,人臉檢測、人臉識別、人臉關鍵點等等。

人臉關鍵點就是在臉上畫一堆點,這有什麼用?

一個比較成熟的例子就是虛擬主播。

看着還不錯吧?

AI 開放平臺提供了豐富的 AI 領域的基礎能力,怎麼用,用來幹什麼,就看自己的想象力了。

當然,這些免費使用的 API 接口有很多限制,比如不能請求太快等等。

想要 API 提供性能更好,QPS 更大的優質服務,那就得充錢了。

老闆,加個鍾

5

最後

這種 API 接口也可以用來清晰數據,訓練自己的網絡模型,花點小錢,清晰一批數據,真香!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章