Использование приведенного ниже кода для получения и анализа данных с веб-сайта. Похоже, ошибка указывает на то, что возвращенный 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
Получение ошибки «неправильно сформированный (неверный токен)» при анализе возвращенного XML-файла с использованием запр ⇐ Python
Программы на Python
1736926711
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}")
Подробнее здесь: [url]https://stackoverflow.com/questions/79357386/getting-a-not-well-formed-invalid-token-error-when-parsing-a-returned-xml-fi[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия