python - BeautifulSoup 寻找 xml 标签

标签 python xml beautifulsoup openstreetmap

我有一些快餐店的 OSM 数据,我使用 Xapi 检索了这些数据, 和 here是一些示例结果:

<osm version="0.6" generator="Osmosis SNAPSHOT-r26564">
   <node id="486275964" version="4" timestamp="2010-05-03T08:21:42Z" uid="12055" user="aude" changeset="4592597" lat="38.8959533" lon="-77.0212458">
      <tag k="name" v="Potato Valley Cafe"/>
      <tag k="amenity" v="fast_food"/>
   </node>
   <node id="486275966" version="4" timestamp="2010-08-06T16:44:13Z" uid="207745" user="NE2" changeset="5418228" lat="38.8959399" lon="-77.0196338">
      <tag k="cuisine" v="burger"/>
      <tag k="name" v="McDonald's"/>
      <tag k="amenity" v="fast_food"/>
   </node>
   <node id="612190923" version="1" timestamp="2010-01-12T14:01:27Z" uid="111209" user="cov" changeset="3603297" lat="38.893683" lon="-77.0292732">
      <tag k="level" v="-1"/>
      <tag k="cuisine" v="sandwich"/>
      <tag k="name" v="Quizno's"/>
      <tag k="amenity" v="fast_food"/>
   </node> 
</osm>
<!--corrected indentation-->

我正在尝试在 python 中使用 BeautifulSoup 从中提取纬度、经度、名称和美食。我可以通过这段代码获取纬度和经度,没有问题:

soup = BeautifulSoup(results)
takeaways = soup.findAll('node')

for eachtakeaway in takeaways:
    longitude = str(eachtakeaway['lon'])
    lattitude = str(eachtakeaway['lat'])

但是我不知道名字:

name = str(eachtakeaway['name'])

抛出错误:

TypeError: 'NoneType' object is not callable

你能告诉我该怎么做吗?谢谢。

最佳答案

问题是,方括号用于检索标签的属性,即 latlon。然而,名称是另一个标签的属性。尝试这样的事情:

soup = BeautifulSoup(results)
takeaways = soup.findAll('node')

for eachtakeaway in takeaways:
    another_tag = eachtakeaway('tag')
    for tag_attrs in another_tag:
        if str(tag_attrs['k']) == 'cuisine':
            print str(tag_attrs['v'])

这将返回 cuisine 值。相同的概念适用于检索 name

*未经测试

关于python - BeautifulSoup 寻找 xml 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13399762/

相关文章:

python - 用 Handlebars 制作美味的汤

python - Tornado/Twisted - Celery - Gevent 比较

java - 将对象从 SOAP 处理程序发送到 Web 服务

java - 如何将XML文件NodeValue插入SQL Server数据库?

python - 尝试从网页解析信息时出现 HTTPError

web-scraping - 如何根据亚马逊的位置抓取数据?

python - 当正则表达式匹配做某事时

python - 在 Selenium,python 中使用 XPath 时出错

python - 任何使用 PayPal IPN 的 python 示例

xml - 使用 Microsoft.xmldom 更改 XML 元素的命名空间前缀以利用 GetElementsByTagName