일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- PIP
- reverse v.s. reversed
- 코딩 테스트
- sort(reverse=True) v.s. reverse
- 순수함수
- ds_store
- slicing [::-1]
- sort v.s. sorted
- 쿼리
- S3
- CI/CD
- 고차함수
- Python
- 함수형 프로그래밍
- [초급(예비) 개발자 오픈소스 실무 역량강화 교육]
- pandas
- blinker
- os.path
- r-string
- Airflow
- boto3
- functools.wraps
- timestamp
- selenium-wire
- OS
- 생각
- decorator
- Today
- Total
공부일지
[Python]ParseError: junk after document element: line 10009, column 0 본문
[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
...
# (파일 저장)
데이터 수집할 때 호출횟수 제한(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