파이썬 HTML파서에서 한글이 깨집니다
글쓴이: cleansugar / 작성시간: 일, 2009/02/08 - 10:04오후
# -*- coding: utf-8 -*- import lxml from lxml import etree from lxml.html import parse, fromstring url = 'http://news.naver.com/print_form.php?office_id=143&article_id=0001977069' #url = 'http://www.w3.org/MarkUp/Guide/' tree = parse(url).getroot() p = lxml.html.tostring(tree, encoding='euc-kr') print p print tree.findtext("head/title") for elt in tree.getiterator("title"): print elt.tag, elt.text filename = elt.text.encode('cp949') print elt.text f1 = open(filename, "wb") f1.write(p) f1.close()
네이버 뉴스를 읽어서 title 부분을 파일 이름으로 삼고 html을 저장하는 프로그램을 만들려고 합니다.
즉, 네이버 뉴스.html을 만드는 겁니다.
그런데 lxml 파서에서
p = lxml.html.tostring(tree, encoding='euc-kr')
print p
이 부분이 문제가 있는지 콘솔에서 한글이 깨져보입니다.
그래서 이걸 저장해도 깨져서 저장됩니다.
질문1. 어떻게 해야 한글이 안깨깨질까요?
질문2.
File "C:\Documents and Settings\user\workspace\test\src\a.py", line 17, in
filename = elt.text.encode('cp949')
UnicodeEncodeError: 'cp949' codec can't encode character u'\xc0' in position 2: illegal multibyte sequence
이런 에러가 납니다.
filename = elt.text.encode('cp949')
print elt.text
이 부분에서 '네이버 뉴스'라는 title엘레먼트를 cp949로 인코딩이 왜 안되는 걸까요?
고맙습니다.
Forums:
댓글 달기