簡體   English   中英

XML 格式不正確

[英]XML Not Well-Formed

我正在嘗試根據 get 請求從網頁中抓取一些數據。 不久前我有一個與此類似的問題,用戶能夠向我展示如何解析 XML 響應。 我開始使用相同的策略,但出現“格式不正確”的錯誤。 我已經搜索了變通方法或解決方案,但我並沒有真正獲得任何進展。 任何幫助將不勝感激!

我的代碼如下:

import requests
from xml.etree import ElementTree as ET
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)


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

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

跳過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 = 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"...>所以我認為這就是為什么你會收到那個錯誤,因為它在獲取root = ET.fromstring(r.content)時正在尋找<?xml version="1.0"...> root = ET.fromstring(r.content)所以它不能轉換它(或者實際上,所有准備好使用json.loads()而不在它之前做轉換。

就像,我說,我也在學習,所以我會做更多的事情來研究這個以及 XML 是如何工作的。 盡管如此,這是一個很好的起點,可以研究、玩耍和學習。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM