通过python从xml数据中提取String Date

时间:2017-04-24 18:56:29

标签: python xml web-scraping

我正在尝试学习一些例子。我可以从xml标签中提取数据,但我面临的问题是提取Date值,即string。 xml数据看起来像

<?xml version="1.0" encoding="UTF-8"?>
 <ValCurs Date="20.04.2016" name="Official exchange rate">
   <Valute ID="47">
   <NumCode>978</NumCode>
   <CharCode>EUR</CharCode>
   <Nominal>1</Nominal>
   <Name>Euro</Name>
   <Value>22.4023</Value>
 </Valute>
 <Valute ID="44">
      <NumCode>840</NumCode>
      <CharCode>USD</CharCode>
      <Nominal>1</Nominal>
      <Name>US Dollar</Name>
      <Value>19.7707</Value>
  </Valute>

我正在尝试提取日期值'20 .04.2016',之后我想将其添加到列表中。我用来提取标签中数据的代码是

#!/usr/bin/python
import os
import webbrowser
import requests
import sys
from xml.etree import ElementTree as ET
from collections import defaultdict


url = 'https://www.bnm.md/en/official_exchange_rates?get_xml=1&date=20.04.2016'
session = requests.session()
response = session.get(url)
data = ET.fromstring(response.content)
elements = []
for element in data.iter():
    if element.tag in ('Name', 'Value'):
        elements.append(element.text)
     print elements

有人可以指导我如何提取日期字符串值“20.04.2016”。谢谢

1 个答案:

答案 0 :(得分:2)

你说:&#34;但我面临的问题是提取日期值,这是字符串而且没有标记。&#34; - 这不是真的!

Date值是<ValCurs>标记的属性。

因此,使用BeautifulSoup之类的xml解析器,您可以访问ValCurs标记以获取Date值。

<强>代码:

from bs4 import BeautifulSoup
import requests

url = 'https://www.bnm.md/en/official_exchange_rates?get_xml=1&date=20.04.2016'

html_source = requests.get(url).text

soup = BeautifulSoup(html_source, 'lxml')

val_tag = soup.find_all('valcurs')

for val in val_tag:
    print(val['date'])

<强>输出:

'20.04.2016'