【问题标题】:python, beautiful soup, xml parsingpython、美汤、xml解析
【发布时间】:2017-09-29 03:12:38
【问题描述】:

如何从以下 XML 中获取纬度和经度值:

<?xml version="1.0" encoding="utf-8"?>
<location source="FoundByWifi">
<coordinates latitude="49.7926292" longitude="24.0538406" 
nlatitude="49.7935180" nlongitude="24.0552174" />
</location>

我尝试使用get_text,但它不能以这种方式工作(

r = requests.get(url)
soup = BeautifulSoup(r.text)
lat = soup.find('coordinates','latitude').get_text(strip=True)

【问题讨论】:

    标签: python xml parsing beautifulsoup


    【解决方案1】:

    “纬度”是“坐标”标签中的一个属性。找到坐标后,soup 对象会将所有属性存储在类似 dict 的键值存储中。

    所以,在你的情况下,找到坐标标签后,检查'纬度'键:

    lat = soup.find('coordinates')['latitude']
    

    您甚至可以在开头或结尾去掉任何多余空格的结果:

    lat = soup.find('coordinates')['latitude'].strip()
    

    【讨论】:

      【解决方案2】:

      Check online demo

      html_doc = """
      <?xml version="1.0" encoding="utf-8"?>
      <location source="FoundByWifi">
      <coordinates latitude="49.7926292" longitude="24.0538406" 
      nlatitude="49.7935180" nlongitude="24.0552174" />
      </location>
      """
      from bs4 import BeautifulSoup
      soup = BeautifulSoup(html_doc, 'html.parser')
      lat = soup.find_all('coordinates')
      
      for i in lat:
        print(i.attrs['latitude'])
        print(i.attrs['longitude'])
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-01-26
        • 2011-04-20
        • 1970-01-01
        • 2017-01-29
        • 1970-01-01
        • 2020-11-23
        • 2018-05-08
        相关资源
        最近更新 更多