2014-07-21 4 views
0

나는이 데이터 구조를 가지고있다.아름다운 수프 파싱 XML

<photo id="123" owner="12345" secret="xx" server="12" farm="4" title="109L_0195" 
ispublic="1" isfriend="0" isfamily="0" views="0" tags="military czechrepublic kmk koně 
humpolec všestrannost humpoec vysocinaregion" latitude="49.550933" longitude="15.36652" 
accuracy="16" context="0" place_id="tg5cqdpWW7q18rE" woeid="790349" geo_is_family="0" 
geo_is_friend="0" geo_is_contact="0" geo_is_public="1"> 
<description> 
Kvalifikační kolo KMK - všestrannost 18.7.2014 - Humpolec 
</description> 
</photo> 


<photo id="123" owner="06" secret="xx" server="12" farm="4" 
title="Ytterligare en bild ifrån inspelningen av Johan Stjerquist's video: Nudist 
Javisst." ispublic="1" isfriend="0" isfamily="0" views="0" tags="square squareformat 
iphoneography instagramapp uploaded:by=instagram" latitude="56.171184" 
longitude="14.741144" accuracy="16" context="0" place_id="u4MzsN9ZW7KnPWo" 
woeid="898740" geo_is_family="0" geo_is_friend="0" geo_is_contact="0" geo_is_public="1"> 
<description/> 
</photo> 

Flickr API를 통해 액세스되는 사진에 대한 평화 로움. 나는 다음과 같은 정보를 추출 할 : ID 제목 나는이를 달성하기 위해 노력 태그 경도 위도

합니다.

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

for data in soup.find_all('photo'): 
    print (data.attrs['id' , 'title' , 'tags' , 'latitude' , 'longitude' , 'accuracy']) 

그건 작동하지 않았습니다. attrs은 인수를 하나만 허용합니다. BeautifulSoup의 설명서를 보면 모든 정보를 얻는 데 도움이되는 다른 도구가 없거나 내가 실수 한 것입니까? (http://www.crummy.com/software/BeautifulSoup/bs4/doc/)? 나는 을 p으로 대체하려했지만 그 중 하나도 작동하지 않았습니다.

어떤 명령을 사용할 수 있습니까? attrs 이후

답변

1

는 사전, 당신은 사전 이해를 사용하여 특정 키를 얻을 수 있습니다 : 당신은 파이썬 3.x의 경우 items()를 사용해야합니다

keys = {'id', 'title', 'tags', 'latitude', 'longitude'} 
for photo in soup.find_all('photo'): 
    print({key:value for key, value in photo.attrs.iteritems() if key in keys}) 

참고.

+0

죄송합니다. 약간 엉망이었습니다. 더 이상 편집 할 수 없습니다. 편집 된 버전입니다. 나는 파이썬에 매우 익숙하다. 그래서 내가 바보 같은 것을 물으려한다면 나에게 용서를해라. 반환 된 값은 사전에 저장되어 있습니까? 첫 번째'loop'에 반복되는 링크가 많은'list'를 제공한다면 ('url'은 다른 URL을 가진 목록이 될 것입니다), 반환 된'values'를' dic' 또는 모든 링크가 별도로 호출되므로 덮어 씁니다. – Stophface

+0

@Christoph 글쎄,이 코드는 모든 사진의 특정 속성을 잡고 인쇄하는 방법을 보여줍니다. 원하는 경우 목록에 수집 할 수 있습니다 - 원하는 목표에 따라 다릅니다. – alecxe

+0

내가하고 싶은 것이있다. http://stackoverflow.com/questions/24876399/smartest-way-to-store-huge-amounts-of-data/24876613?noredirect=1#comment38639634_24876613 – Stophface