Получение ошибки «неправильно сформированный (неверный токен)» при анализе возвращенного XML-файла с использованием запрPython

Программы на Python
Ответить
Anonymous
 Получение ошибки «неправильно сформированный (неверный токен)» при анализе возвращенного XML-файла с использованием запр

Сообщение Anonymous »

Использование приведенного ниже кода для получения и анализа данных с веб-сайта. Похоже, ошибка указывает на то, что возвращенный XML имеет неверный формат. Вы впервые знакомы с XML. Как устранить ошибки форматирования, возвращаемые со стороны сервера (или ошибка указывает на какую-то другую проблему)?
import pandas as pd
import requests
from datetime import datetime, timedelta
import xml.etree.ElementTree as ET

cik = "0000320193"

BASE_URL = "https://data.sec.gov"
USER_AGENT = "alias (alias199@gmail.com)"
ACC_ENCODING = "gzip, deflate"
HOST_NAME = "www.sec.gov"

headers = {
"User-Agent": USER_AGENT,
"Accept-Encoding": ACC_ENCODING,
"Host": HOST_NAME
}

filing_data = []

test = pd.DataFrame(
{'accessionNumber': ['0000320193-24-000132', '0000320193-24-000130', '0000320193-24-000129', '0000320193-24-000126', '0000320193-24-000116'],
'filingDate': ['2024-12-18', '2024-11-19', '2024-11-19', '2024-11-07', '2024-10-17'],
'form': ['4', '4' ,'4', '4', '4'],
'primaryDocument': ['xslF345X05/wk-form4_1734564614.xml', 'xslF345X05/wk-form4_1732059096.xml', 'xslF345X05/wk-form4_1732059042.xml', 'xslF345X05/wk-form4_1731022209.xml', 'xslF345X05/wk-form4_1729204211.xml']
}
)

for i, filing in test.iterrows():

filing_url = f"{BASE_URL}/Archives/edgar/data/{int(cik)}/{filing['accessionNumber'].replace('-', '')}/{filing['primaryDocument']}"
try:
response = requests.get(filing_url, headers=headers)

if response.status_code == 200:
try:
# Clean up the response content before parsing
content = response.content.decode('utf-8', errors='ignore')

# Fix malformed XML by identifying unclosed tags and repairing them
try:
root = ET.fromstring(content)
except ET.ParseError:
# Attempt to auto-correct malformed XML
if not content.strip().startswith(""):
content = f"{content}"
root = ET.fromstring(content)

filing_info = {
"accessionNumber": filing["accessionNumber"],
"filingDate": filing["filingDate"],
"form": filing["form"],
"content": {},
}

for child in root.iter():
filing_info["content"][child.tag] = child.text

filing_data.append(filing_info)
except ET.ParseError as e:
print(f"Error parsing XML for filing: {filing_url}. Error: {e}")
else:
print(f"Failed to retrieve filing document: {filing_url}. HTTP Status: {response.status_code}")
except Exception as e:
print(f"Error retrieving filing document: {filing_url}. Error: {e}")


Подробнее здесь: https://stackoverflow.com/questions/793 ... ned-xml-fi
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»