2014-07-21 39 views
2

我想通過REST請求訪問flickr API並下載大約1GB的元數據。 1張照片(也許更多)。 我想將它們存儲在.csv文件中,然後將它們導入到MySQL數據庫中作進一步處理存儲海量數據的最佳方法

我想知道處理這種大數據的最聰明的方法是什麼。我不確定的是如何在用Python訪問網站後將它們存儲起來,並將它們傳遞給.csv文件,然後從那裏傳遞到數據庫。這是一個大問號。

現在發生的事情(根據我的理解,請參閱下面的代碼)是爲每個photo(每個被調用的URL爲250)創建一個dictionary。這樣我就會得到儘可能多的照片字典(1 Mio或更多)。那可能嗎? 所有這些dictionaries將被追加到列表中。我可以將很多字典添加到列表中嗎?我想將字典追加到列表的唯一原因是,從列表中逐行保存到.csv文件似乎更容易。

你應該知道的是,我是一個完整的初學者編程,python或以往任何時候。我的專業是完全不同的,我剛開始學習。如果您需要進一步解釋,請告訴我!

#accessing website 
list = [] 
url = "https://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=5...1b&per_page=250&accuracy=1&has_geo=1&extras=geo,tags,views,description" 
soup = BeautifulSoup(urlopen(url)) #soup it up 
for data in soup.find_all('photo'): 
    dict = { 
     "id": data.get('id'), 
     "title": data.get('title'), 
     "tags": data.get('tags'), 
     "latitude": data.get('latitude'), 
     "longitude": data.get('longitude'), 
    } 
print (dict) 

list.append(dict) 

我正在使用python 3.3。我不直接將數據傳遞到數據庫的原因是因爲我無法在我的操作系統x 10.6上運行mysql db的python連接器。

任何幫助非常感謝。 謝謝大家!

+0

.csv中間人的使用效率低,耗時且棘手。爲什麼你的MySQL Python驅動程序不工作?我認爲這就是你應該首先解決的問題(如果可能的話),這是一個完全不同的問題。 – jayelm

+0

我試圖解決並希望以後刻錄我的電腦並跳出窗口。但我在這裏,嘗試解決。 – Stophface

+0

在這個網站上提出這個問題 - 你會在某個時候想要這個MySQL驅動程序,對吧? – jayelm

回答

2

我建議使用SQLite進行原型設計而不是搞亂CSV。 SQLite在python上運行得非常好,但是你不必經歷所有設置單獨數據庫的麻煩。

此外,我不認爲你想使用BeautifulSoup這個,因爲它聽起來不像刮是你真正想要的。這聽起來像你想直接訪問REST API。爲此,您需要使用類似 the requests library 或更好的 one of the flickr Python bindings

一旦啓動並運行,我將在循環的每次迭代過程中寫入數據庫,並隨時保存。這樣你就不會使用大量的內存,如果發生崩潰,你不會丟失迄今爲止所取得的數據。

+0

嘿,謝謝你的flickr python綁定提示。不知道他們!我認爲它的webscraping是因爲我稱之爲XML格式的網站,我試圖從中提取信息? 我會看看SQLite – Stophface

+0

我從來沒有使用flickr API,但它看起來像你可以使用幾種不同的格式。我推薦JSON。所以你的resquest格式將是REST和你的響應格式JSON。 – anderspitman

+0

然後我不能用bs解析它。與XML相比,JSON有什麼更好的? – Stophface

相關問題