2014-07-19 4 views
2

전자 폐기물 문제를 연구 중이며이 코드를 flickrapi py 모듈에서 사용하여 # 전자 폐기물 태그가 붙은 Flickr 이미지의 xml 데이터를 가져옵니다.파이썬으로 이미지 데이터를 flickr xml 이미지 데이터에서 추출하는 방법은 무엇입니까?

<rsp stat="ok"> 
<photos page="1" pages="58" perpage="100" total="5785"> 
    <photo farm="3" id="13982876982" isfamily="0" isfriend="0" ispublic="1" owner="[email protected]" secret="2d33e5efb1" server="2903" title="Sean Gallagher, Pulitzer Photojournalist visits MSA" /> 
    <photo farm="8" id="13962977066" isfamily="0" isfriend="0" ispublic="1" owner="[email protected]" secret="aeb6bc1454" server="7139" title="Sean Gallagher, Pulitzer Photojournalist visits MSA" /> 
</photos> 
</rsp> 

지금, 나는 또한 이 이미지이 있어야 지리적 메타 데이터를 인쇄 취득 할 : 코드를 실행

import flickrapi 
import xml 
api_key='myAPI key' 
api_secret ='myAPI secret' 

flickr = flickrapi.FlickrAPI(api_key,secret=api_secret) 
r = flickr.photos_search(tags='e-waste', has_geo="1", per_page='100') 
xml.etree.ElementTree.dump(r) 

나에게 결과를 제공합니다. 어떻게하면 될까요? 궁극적으로 그 geodata를 CSV로 추출하여 매핑 할 수 있습니다.

건배!

답변

1

<photo> 요소에서 id 특성을 추출한 다음 flickr.photos.getInfo으로 전달하고 <location> 요소에서 데이터를 추출하십시오. 문서 페이지의 예제는 이것을 표시하지 않지만 예제를 보려면 API Explorer을 사용할 수 있습니다. 다음은 내 사진 중 하나의 예입니다.

<location latitude="38.829786" longitude="-77.52202" accuracy="14" context="0" place_id="ioKEzZ1TV7oQ55R_" woeid="25"> 
    <locality place_id="ioKEzZ1TV7oQ55R_" woeid="25">Sudley Springs</locality> 
    <county place_id="hF2V0rlQUL9MlAlEkA" woeid="12590406">Prince William</county> 
    <region place_id="pPrhG7VTUb6SbYO." woeid="2347605">Virginia</region> 
    <country place_id="nz.gsghTUb4c2WAecA" woeid="23424977">United States</country> 
</location> 
1

또 다른 접근 방법은 REST API입니다. 보십시오 : https://www.flickr.com/services/api/flickr.photos.search.html

많은 매개 변수를 사용하여 검색 범위를 좁힐 수 있습니다. 지리적 쿼리를 수행하려면 bbox를 사용하고 검색에 위도/경도를 포함시키고 태그를 추가하여 검색 범위를 좁 힙니다 (# 전자 폐기물). url.open으로 각 URL을 호출하고 XML을 파싱하는 도구 인 BeautifulSoup (http://www.crummy.com/software/BeautifulSoup/)로 전달하십시오.

그것은이 같은 것을 볼 수 있었다 :

from bs4 import BeautifulSoup 

url = "https://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=5....b&per_page=250&has_geo=1&extras=geo,tags,views,description" 
soup = BeautifulSoup(urlopen(url)) #pass it to Beautiful Soup 

for data in soup.find_all('photo'): #iterate through the XML Document 
    scraping = (
    data.get("id"), #find the data you want and write it into a tuple which you then can write to a csv 
    data.get("title"), 
    data.get("tags"), 
    data.get("longitude"), 
    data.get("latitude"), 
    ) 
당신은 위의 answere에 비해 자신에게 단계를 저장
관련 문제