【问题标题】:Beautiful soup parsing XML解析 XML 的漂亮汤
【发布时间】:2014-07-21 21:20:57
【问题描述】:

我有这个数据结构。

<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,但这也没有用。

任何想法我可以使用哪个命令?

【问题讨论】:

    标签: python web-scraping beautifulsoup flickr


    【解决方案1】:

    由于attrs 是字典,因此您只能使用字典推导获取特定的键:

    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})
    

    请注意,对于 Python-3.x,您应该使用 items()

    【讨论】:

    • 抱歉,有点搞砸了。可以再编辑了。这里是编辑后的版本。我对python很陌生,所以如果我要问一些愚蠢的问题,请原谅我。返回的值是否也存储在字典中,对吗?如果我要给我的第一个loop 一个list 提供很多要迭代的链接(所以url 将是一个后面有不同URL 的列表),它会将返回的values 附加到@ 987654330@或覆盖它,因为每个链接都将被单独调用
    • @Christoph 好吧,这段代码只是演示了如何获取每张照片的特定属性并将其打印出来。如果需要,您可以将它们收集到列表中 - 取决于您想要的目标是什么。
    猜你喜欢
    • 1970-01-01
    • 2019-11-10
    • 2013-03-21
    • 2017-05-23
    • 2021-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-03
    相关资源
    最近更新 更多