我正在尝试学习一些例子。我可以从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”。谢谢
答案 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'