[Python]ParseError: junk after document element: line 10009, column 0
배경
데이터를 먼저 수집하고 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
...
# (파일 저장)

데이터 수집할 때 호출횟수 제한(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가 문제 없이 잘 나온다.

참고링크
해결도움
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