王金峰 ,李世良 ,王明 ,羅星宇 ,張雪玉
(1.防災科技學院 信息工程學院,河北 三河 065201,2.河北女子職業技術學院,石家莊 050091)
隨著大數據時代的到來,大數據具有數據體量巨大(Volume)、數據類型繁多 (Variety)、價值密度低 (Value)、處理速度快(Velocity)的特點[1]。面對人們越來越多樣的需求[2],可以根據自己的實際需求,繼續修改程序來達到自己的要求[3]。程序按照一個檢索詞列表進行批量爬取,并把圖片信息存入數據庫中。本文提供了一個通過Python調用Flickr API實現通過關鍵字檢索獲取圖片信息并批量下載的程序。
Python是一種計算機程序設計語言,是一種動態的、面向對象的腳本語言。Python語言的一大優勢就是其語法簡潔清晰,并具有豐富和強大的類庫[5],這為程序的編寫提供了極大的便利使得數據抓取工作變得生動有趣[6],從而簡化了程序。
Flickr是雅虎旗下的圖片分享網站,上面有全世界網友分享的大量精彩圖片,被認為是專業的圖片網站。
系統分為兩部分:第一部分即調用Flickr API獲取圖片等數據,第二部分即根據數據庫中的圖片Url下載圖。獲取圖片信息的流程圖如圖1所示,下載的流程圖如圖2所示。
Flickr網站上的每張圖片都有一個唯一標識的ID,如果想要知道圖片的信息首先就是要獲取圖片在Flickr上的ID,再通過調用Flickr的多種方法來獲取圖片的不同信息。Flickr API庫有很多方法可以調用,可以獲取不同的圖片數據[4]。但是使用前提都是需要有Flickr API的密鑰,參考代碼如下:

程序主要通過關鍵詞來進行檢索相應的圖片,tags和text就是對應輸入相應的關鍵詞參數,extras為要求返回不同大小圖片的Url。參考代碼如下:

通過photos.search方法就可以獲得檢索圖片的Json列表,再對圖片列表逐個分析通過調用photo.get()獲得關鍵的數據即圖片url和圖片在Flickr網站上的id,

圖1

圖2
返回的Json列表:

如果想要獲取圖片的其他數據可以根據獲取到的圖片id通過調用其他的方法并解析返回的Json數據來進行獲取。方法調用參考代碼如下:


圖片的下載是根據之前獲取的圖片的url借助request庫來進行下載的。圖片保存的格式是按照檢索的字段為文件夾,文件夾里包含下載的圖片。參考代碼如下:

在圖片的下載時將采用多線程下載借助threadpool庫實現,參考代碼如下:

本文的爬蟲通過調用Flickr API和Python豐富的第三庫實現了對Flickr網站上的圖片和圖片信息進行批量爬取的程序,為一些追求高質量的,準確的,想要獲取圖片相關信息數據的研究者提供了一種方案。通過充分利用Python語言的特點結合Flickr API,能夠方便快捷地獲取大量的圖片和圖片相關信息,并將獲取到的圖片自動存儲到本地,為后續的機器學習、人工智能奠定了數據基礎。