[英]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.