xml 파싱 오류 해결 ( with BeautifulSoup )
xml 파일을 파싱하기 위해 xml.etree 를 사용했다.
from os import listdir
from shutil import copyfile
import xml.etree.ElementTree as ET
..중략..
def copy_js_file(done_list):
for file in done_list:
_parser = ET.XMLParser(encoding="utf-8")
_file = ET.parse(file, _parser)
파싱 대상 파일은 단순한 xml이 아닌 RIA 기반의 웹XML 파일이다.
위 코드 실행시 아래와 같은 오류가 발생했다.
xml.etree.ElementTree.ParseError: not well-formed (invalid token)
XMLParser의 encoding 옵션을 수정하여도 다른 내용의 오류가 발생했다.
온갖 방법을 사용해봤지만 해결이 되지 않아 BeautifulSoup 으로 파싱해보았다.
from os import listdir
from shutil import copyfile
from bs4 import BeautifulSoup as bf
..중략..
def copy_js_file(done_list):
for file in done_list:
with open(file, 'r') as f:
_file = bf(f, features="html.parser")
print(_file)
적용한 결과 문제가 해결되었다. 짐작건대 파싱 대상 파일의 xml구조에 오류가 있어 발생한 문제라 생각된다.
BeaultifulSoup의 "html.parser" 옵션을 지정하면 xml 구조에 오류가 존재해도 무시하고 파싱처리 되는 것 같다.
반응형
'python' 카테고리의 다른 글
Python - 초간단 디렉토리 및 파일 생성, 복사하기 ! (0) | 2021.01.11 |
---|---|
RuntimeError: The current Numpy installation fails to pass a sanity check due to a bug in the windows runtime. (0) | 2020.12.20 |
python - 타입 비교, 이런방식도 있었어? (0) | 2020.03.24 |
python - 디렉토리에 파일존재 유무 체크 ( open, os.path, pathlib ) (0) | 2020.03.07 |
python - lambda 활용법과 단점 (0) | 2020.02.14 |