我想通过REST请求访问flickr API并下载大约的元数据。 1张Mio照片(可能更多)。 我想将它们存储在.csv文件中,然后将它们导入MySQL数据库以进行进一步处理
我想知道处理这些大数据最聪明的方法是什么。我不确定的是如何在用Python访问网站后存储它们,将它们传递给.csv文件并从那里传递到数据库。这是一个很大的问号。
现在发生的事情(根据我的理解,请参阅下面的代码)是为dictionary
创建photo
(每个被调用的网址250个)。这样我最终会得到尽可能多的词典(1000万或更多)。那可能吗?
所有这些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。我没有将数据直接传递到db的原因是因为我无法在我的os x 10.6上运行mysql db的python连接器。
非常感谢任何帮助。 谢谢大家!
答案 0 :(得分:3)
我建议使用SQLite进行原型设计,而不是使用CSV。 SQLite在python中运行良好,但您不必经历设置单独数据库的所有麻烦。
另外,我认为你不想使用BeautifulSoup,因为它听起来并不像你真正想要的那样。听起来您想直接访问REST API。为此,你会想要使用类似的东西 the requests library 还是更好 one of the flickr Python bindings
一旦你启动并运行,我会在循环的每次迭代期间写入数据库,随时保存。这样你就不会使用大量的内存,如果发生了崩溃,你就不会丢失到目前为止所记录的数据。