XML плохо сформирован - PullRequest
       8

XML плохо сформирован

0 голосов
/ 27 ноября 2018

Я пытаюсь очистить некоторые данные с веб-страницы, основываясь на запросе get.Недавно у меня возник вопрос, похожий на этот, и пользователь смог показать мне, как анализировать XML-ответ.Я использовал ту же стратегию, но получаю «не правильно сформированную» ошибку.Я искал обходные пути или решения, но я на самом деле никуда не денусь.Любая помощь будет принята с благодарностью!

Мой код выглядит следующим образом:

импорт запросов из xml.etree импорт ElementTree как ET импорт json

base_url = "https://www.gmeiutility.org/actions/Search/?isPendingValidationChecked=true&isSearchAllLOUChecked=true&keyWord=5493&page=1&resultsPerPage=15&searchType=baseSearch&sortDirection=&sortFieldName=" r = arguments.get (base_url) print (r.content)

root = ET.fromstring (r.content) data = json.loads (root.text)

для результатав данных ['entitySearchResult']: печать (результат ['LEINumber'])

1 Ответ

0 голосов
/ 27 ноября 2018

пропустить root = ET.fromstring(r.content).Не нужно.Перейдите прямо к 'json.loads'

import requests 
import json

base_url = "https://www.gmeiutility.org/actions/Search/?isPendingValidationChecked=true&isSearchAllLOUChecked=true&keyWord=5493&page=1&resultsPerPage=15&searchType=baseSearch&sortDirection=&sortFieldName=" 
r = requests.get(base_url) 
#print(r.content)

data = json.loads(r.content)

for result in data['entitySearchResult']: 
    print(result['LEINumber'])

Я получил вывод:

549300FTQBLOETQK6X43
549300UQLV7M883Z2X56
5493003MO7QE8VJUEP94
549300GKNMWK6EJZWB62
...

РЕДАКТИРОВАТЬ: Если кто-то хочет расширить / уточнить за пределами, не стесняйтесь.Мое объяснение ниже может быть не совсем точным (и плохое объяснение), потому что я все еще учусь, но я думаю, что это как-то связано с тем, как XML структурирован с requests.get().

Что я сделалЯ посмотрел на ваш r.content, и он уже выглядел как json-подобная структура, поэтому я решил сразу же попробовать json.loads(r.content).

Если вы посмотрите на него дальше,предыдущий пост / вопрос, который вы разместили (как вы упомянули выше), когда вы print (r.content), вы увидите:

b'<?xml version="1.0" encoding="utf-8"?>\r\n<string xmlns="http://tempuri.org/">{"Result":[{"Appl_Number":"20181458","Seq_Num":"28","Inst_Rle_Cde":"1","Appl_Type":"BRANCH","Appl_Recd_YMD":"11/1/2018 12:00:00...

Обратите внимание, что он начинается с b'<?xml version="1.0" encoding="utf-8"?>\r\n, так что root = ET.fromstring(r.content) в вашемПервый пост, затем глядя на root.text, появился, чтобы преобразовать это таким образом, что вы request.get() здесь.

, когда вы делаете print (r.content) здесь, я вижу:

b'{"totalPages":28085,"totalResults":421274,"lastResult":15,"entitySearchResult":[{"isPendingReview":"false","headquartersAddressLineOne":

, в котором отсутствует <?xml version="1.0"...> Так что я думаю, именно поэтому вы получили эту ошибку, потому что он искал <?xml version="1.0"...> при получении этого root = ET.fromstring(r.content) Так что он не смог преобразовать его (или фактически все готово к использованиюjson.loads() без преобразования перед этим.

Как я уже сказал, я сдо обучения тоже, так что я буду больше изучать это и как работает XML.Тем не менее, это хорошая отправная точка для изучения, обучения и изучения.

...