本文主要参考此篇博客,使用Python按坐标查找Flickr照片数据,感谢原博主。
1.申请Flickr的开发密钥,注册登陆Flickr(个人利用QQ邮箱进行了注册登陆)。注册登陆(注意登陆此网站,需要科学上网。)
2.阅读开发者指南,获取API key。
步骤如下:
(1)
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
3.完整代码,注释解释的已经较详尽。

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import pandas as pd
import requests
import json
import time
import random
import pymysql
import xlrd
import xlwt
#主要的url
api='https://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=你的key&text=&min_taken_date=起始时间(格式如:2018-06-30)&max_taken_date=起始时间(格式如:2018-06-30)1&woe_id=所要查询地区的woe_id&extras=date_taken,tags,title,description,geo&per_page=500&format=json&sort=date-taken-asc'
r= requests.get(api)
a = json.loads(r.text[14:-1])

for i in range(a["photos"]["pages"]):#进行翻页,循环获得每页的url
    s=requests.get(api+"&page="+str(i))
    b=json.loads(s.text[14:-1])#去掉外层的jsonFlickrApi()这几个字符串后解析成json的格式
    id=[]#定义获取内容的相关数组
    owner=[]
    secret=[]
    server=[]
    farm=[]
    datetaken=[]
    latitude=[]
    longitude=[]
    accuracy=[]
    place_id=[]
    woeid=[]
    for i in range(len(b["photos"]["photo"])):#循环获取每页每个照片数据,其中b["photos"]["photo"]为列表,则我们只需按
        c = b["photos"]["photo"]              #序号获取每个照片数据
        id.append(c[i]["id"])#获取到的每个照片数据我为字典类型,然后按需要取得自己想要的内容。
        owner.append(c[i]["owner"])
        secret.append(c[i]["secret"])
        server.append(c[i]["server"])
        farm.append(c[i]["farm"])
        datetaken.append(c[i]["datetaken"])
        latitude.append(c[i]["latitude"])
        longitude.append(c[i]["longitude"])
        accuracy.append(c[i]["accuracy"])
        place_id.append(c[i]["place_id"])
        woeid.append(c[i]["woeid"])
        print(i, c[i]["id"])#每获取一张照片数据,打印其
        time.sleep(random.randint(5, 10))#随机休息5-10秒,防止服务器拒绝访问。
f = xlwt.Workbook() #创建工作簿
sheet1 = f.add_sheet(u'sheet1',cell_overwrite_ok=True) #创建sheet
j=0
for id1,owner1,secret1,server1,farm1,datetaken1,latitude1,longitude1,accuracy1,place_id1,woeid1\
     in zip(id,owner,secret,server,farm,datetaken,latitude,longitude,accuracy,place_id,woeid):
    print(id1,owner1,secret1,server1,farm1,datetaken1,latitude1,longitude1,accuracy1,place_id1,woeid1)
    sheet1.write(j,0,id1);sheet1.write(j,1,owner1);sheet1.write(j,2,secret1);sheet1.write(j,3,server1);sheet1.write(j,4,farm1);sheet1.write(j,5,datetaken1);sheet1.write(j,6,latitude1);sheet1.write(j,7,longitude1);\
    sheet1.write(j,8,accuracy1);sheet1.write(j,9,place_id);sheet1.write(j,10,woeid);
    j=j+1
f.save(r'路径\flackr_1.xls' )#保存文件


不知之处,请多见谅。欢迎大家一起交流学习。




Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐