#python-3.x #xml-parsing #urllib
Вопрос:
Я пытаюсь выполнить запрос внутри класса, и если ответ плохой ( либо нет xml-файла, либо запрос 404), я хотел бы обновить URL-адрес и отправить запрос снова. ошибка, которую я получаю с нижеприведенным основным классом, такова : ml.etree.ElementTree.ParseError: несоответствующий тег: строка 15, столбец 2 Я знаю, что получаю эту ошибку, когда в ответе нет xml-файла. Я хотел бы обновить URL-адрес, когда у меня возникнет эта ошибка, и повторить попытку, чтобы увидеть, получу ли я ответ с помощью xml-файла. Когда в ответе есть xml — файл, я не получаю никаких ошибок. Вот мой основной урок :
class jenkinsRepo:
def __init__(self,url_nm,user,passd):
try:
self.url_nm=url_nm
self.res = requests.get(url_nm,auth=(user,passd), stream=True)
#self.res.raise_for_status()
except (if res is not a valid xml or has 404 response then do the following which will update the url )
#self.url_nm=url_nm.replace("config","demo")
#self.res = requests.get(self.url_nm,auth=(user,passd), stream=True)
self.root = ET.fromstring(self.res.raw.data)
def checkConfig(self):
return (self.url_nm)
и мой телефонный файл
for i in range (total):
url1=(sh['list'][i])
#print (url1)
call1 = jenkinsRepo(url1,user,password)
out1=call1.checkConfig()
print(out1)
я смог вызвать ошибку со следующим кодом, но затем не смог обновить URL-адрес для другого запроса.
Код, который вызвал ошибку, выглядит следующим образом:
lass jenkinsRepo:
def __init__(self,url_nm,user,passd):
try:
self.url_nm=url_nm
self.res = requests.get(url_nm,auth=(user,passd), stream=True)
self.res.raise_for_status()
except requests.exceptions.HTTPError as e:
raise e #SystemExit(err)
#response.raise_for_status()
#if requests.exceptions.HTTPError.status_code == 404:
raise e(self.model_name ' model may be unavailable.')
self.url_nm=url_nm.replace("config","demo")
self.res = requests.get(self.url_nm,auth=(user,passd), stream=True)
self.root = ET.fromstring(self.res.raw.data)