공부일지

[Python]ParseError: junk after document element: line 10009, column 0 본문

Computer/Trouble Shooting

[Python]ParseError: junk after document element: line 10009, column 0

이르리의 공부일지 2025. 4. 23. 16:31

 

배경

데이터를 먼저 수집하고 xml 파일로 저장해두었다.

해당 xml 파일을 파싱하기 위해 xml 모듈을 이용했는데 오류가 나타났다.

import xml.etree.ElementTree as ET

tree = ET.parse('data/ksccPatternStation.xml')
root = tree.getroot()

 

 

원인

xml_data = ''
for i in range(1, 254429, 1000): # 처음 샘플 수집해보니 list_total_count가 25449개임
    START_INDEX = i
    END_INDEX = i + 999

    url = 'http://openapi.seoul.go.kr:8088/{api_key}/xml/ksccPatternStation/{start_idx}/{end_idx}'.format(api_key=API_KEY, start_idx=START_INDEX, end_idx=END_INDEX)

    res = requests.get(url)
    if res.status_code == 200:
        xml_data += res.text
        
...
# (파일 저장)

수집한 xml 데이터

 

데이터 수집할 때 호출횟수 제한(1번 호출 시 1000건) 있어서

반복문으로 나누어 수집했는데

그럴 때마다 아래 코드가 들어가서 그렇다.

<?xml version="1.0" encoding="UTF-8"?>

 

스택오버플로에서 관련 글을 찾아보니

저 코드는 파일 제일 처음에, 1번만 들어가야한다고 한다.

xml 파싱 툴 사용하려면 그런 것.(공식문서 참고해보기)

 

 

해결

방법

1. xml 문서에서 cmd + f로 위 반복되는 코드 찾는다.

2. 2번째쯤 가면 반복되는 전체 코드 보일 것임, 따로 복사해두고 다 지운다.

<?xml version="1.0" encoding="UTF-8"?>
<ksccPatternStation>
<list_total_count>254429</list_total_count>
<RESULT>
<CODE>INFO-000</CODE>
<MESSAGE>정상 처리되었습니다</MESSAGE>
</RESULT>

+) 영역으로 지워야지 텍스트 찾기로 지우면 안 지워짐(이유: list_total_count 개수가 호출마다 줄어들기 때문)

 

3. 문서 제일 위에만 위 내용을 다시 붙여넣기 해준다.

 

 

결과

주피터로 확인해보니 root가 문제 없이 잘 나온다.

주피터로 확인


참고링크

해결도움

https://stackoverflow.com/questions/63903955/parseerror-junk-after-document-element-line-7-column-0-python-xml-parsing

 

ParseError: junk after document element: line 7, column 0, (Python, XML parsing)

I have a dummy xml file, <?xml version="1.0" encoding="UTF-8"?> <hello xmlns="abc"> <inside> <ok>xyz</ok> </inside> </hello>...

stackoverflow.com

 

파싱툴

https://docs.python.org/ko/3.13/library/xml.etree.elementtree.html

 

xml.etree.ElementTree — The ElementTree XML API

Source code: Lib/xml/etree/ElementTree.py The xml.etree.ElementTree module implements a simple and efficient API for parsing and creating XML data. Tutorial: This is a short tutorial for using xml....

docs.python.org