首页 > 解决方案 > XMLSyntaxError:需要开始标记,未找到“<”,第 1 行,第 1 列

问题描述

我正在尝试构建一个脚本来查询英国国家电网 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

我已尝试遵循国家电网提供的建议(下面的链接),但仍然返回相同的错误。

http://marketinformation.natgrid.co.uk/MIPIws-public/public/publicwebservice.asmx?op=GetPublicationDataWM

标签: xmlexpected-exception

解决方案


在第一个开头“<”之前有空格。这是不允许的。


推荐阅读