我正在尝试构建一个脚本来查询英国国家电网 API。到目前为止,这是我的代码:
import requests
import pandas as pd
from lxml import etree
def getXML(toDate, fromDate, dayType):
url = "http://marketinformation.natgrid.co.uk/MIPIws-public/public/publicwebservice.asmx"
headers = {'content type': 'application/soap+xml; charset=utf-8'}
body="""
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<GetPublicationDataWM xmlns="http://www.NationalGrid.com/MIPI/">
<reqObject>
<LatestFlag>N</LatestFlag>
<ApplicableForFlag>Y</ApplicableForFlag>
<ToDate>%s</ToDate>
<FromDate>%s</FromDate>
<DateType>%s</DateType>
<PublicationObjectNameList>
<string>LNG Stock Level</string>
</PublicationObjectNameList>
</reqObject>
</GetPublicationDataWM>
</soap:Body>
</soap:Envelope>
""" % (toDate,fromDate,dayType)
response=requests.post(url,data=body,headers=headers)
return response.content
df = pd.DataFrame(columns=("applicable_at","applicable for","name","value","generated","quality indicator","substituted","created date"))
for pd_date in pd.date_range('2019-01-01','2019-01-03'):
day = pd_date.strftime('%Y-%m-%d')
root = etree.fromstring(getXML(day,day,"normal"))
但我收到以下错误:
File "<string>", line 1
XMLSyntaxError: Start tag expected, '<' not found, line 1, column 1
我已尝试遵循国家电网提供的建议(下面的链接),但仍然返回相同的错误。