inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

파이썬 입문 및 웹 크롤링을 활용한 다양한 자동화 어플리케이션 제작하기

BeautifulSoup 사용법 및 간단 웹 파싱 실습(1) - 네이버, 다음, 인프런

네이버 주식 한글깨짐문제

1165

WonBok Lee

작성한 질문수 2

0

코드에 오타가 있나 싶어 깃헙 작성하신거 고대로 붙여도 네이버 주식 top10은 한글이 깨지네요 ㅠ

제가 작성한 코드이고

from bs4 import BeautifulSoup
import urllib.request as req
import sys
import io

sys.stdout = io.TextIOWrapper(sys.stdout.detach(), encoding = 'utf-8')
sys.stderr = io.TextIOWrapper(sys.stderr.detach(), encoding = 'utf-8')

url = "http://finance.naver.com/sise/"
res = req.urlopen(url).read()
soup = BeautifulSoup(res, "html.parser")

top = soup.select("#siselist_tab_0 > tr")
i = 1
for e in top:
    if e.find("a") is not None:
        print(i,e.select_one(".tltle").string,"=",e.select_one("td:nth-of-type(5)").string)
        i += 1

출력결과입니다.

1 ½ÅÀÏ»ê¾÷ = 1,885
2 ÄÉÀ̾¾¿¡½º = 5,350
3 ¼¼Á¾¸ÓƼ¸®¾óÁî = 425
4 ¿»·ÎÆäÀÌ = 127
5 ƼÄÉÀ̾¾ = 20,500
6 ÀÚºñ½º = 4,890
7 ¼öÁ¨ÅØ = 25,350
8 Å×ũƮ·£½º = 7,270
9 ¾ÓÃ÷ = 2,150

다음 주식, 인프런 예제는 잘됐는데 네이버만 깨지네요 ㅠ 확인 부탁드립니다.

웹-크롤링 python

답변 5

1

파크

res = req.urlopen(url).read().decode('euc-kr')
코드를 이렇게 해도 '네이버 한글 깨짐문제' 오류 해결되네요.

0

KyungHwan Kim

res = req.urlopen(url).read().decode(req.urlopen(url).headers.get_content_charset())

으로 변경하세요.

response 에 대해 decode합니다.

respone 의 캐릭터셋이 euc-kr 입니다.

이걸 파이썬에서 사용할 수 있도록 디코드해서 utf-8 로 변경합니다.

0

WonBok Lee

어제는 강의를 못들어서 답장이 늦었습니다
강사님 코드 그대로 붙여놔도 한글이 깨져서 나옵니다 ㅠㅠ
atom과 vs code의 차이점일수도 있을까요?
아 그리고 error처리에서요

except OSError as e:
    if e.errno != errno.EEXIST:
        print("Failed to create directory!!!!!")
        raise

errno.EEXIST의 errno에서 undefined variable errno라고 나오는데요 검색해보면 사용법은 맞는것 같은데
pylint때문에 발생하는 에러일까요?

0

좋은사람

안녕하세요.

res.decode('euc-kr','replace').encode('utf-8','replace') 이 부분은 굳이 필요하지 않은 코드 같습니다.

인코딩 캐릭터셋 자체가 utf8 로 넘어오기 때문에 굳이 불필요한 코드가 추가 되지 않았는지 또는

제가 올린 소스코드로 다시 한 번 검토 부탁드립니다.

네이버는 기본적으로 utf8을 사용합니다.

열심히 하시는 모습 보기 좋습니다.

감사합니다.

0

WonBok Lee

검색해서 아래 같이 바꾸니까 되는데요 네이버만 왜 이렇게 되는지 궁금하네요~

url = "http://finance.naver.com/sise/"

res = req.urlopen(url).read()

content = res.decode('euc-kr','replace').encode('utf-8','replace')

soup = BeautifulSoup(content, "html.parser")

현재 예제에서 error 발생

0

367

3

유튜브 동영상 다운로드

0

1448

2

Atom 에디터 관련

0

337

1

위시켓 폼데이터

0

274

1

스케줄러 사용 관련 질문 드립니다

0

627

1

selenium 에러

0

428

1

Progress bar 쓰레드 관련

0

489

1

Install Package 관련 문의

0

328

1

tkinter 샘플 코드 실행 오류 건

0

1267

1

4-7-6 네이버 & 카카오 주식 정보 가져오기

0

381

1

네이버자동로그인_by_selenium

0

876

1

위시캣 로그인 처리 및 크롤링 질문

0

345

1

2-8-1 네이버이미지 크롤링 질문

1

604

3

li:nth-of-type 질문

0

350

2

에러가 뜨는데 잘 모르겠어요ㅠ

0

401

2

Install Packages 항목이 안보이는 이유가 뭘까요?

0

401

2

환경변수 Path 설정 방법

0

631

1

웹 브라우저 없는 스크랩핑 및 파싱 실습(1) - 인프런

0

333

1

웹 브라우저 없는 스크랩핑 및 파싱 실습(1) -git주소

0

477

3

download2-8-1. py질문

0

203

1

ip 차단 당하는 거 같은데 아무리 랜덤주고, sleep 줘도 안 되는데 다른 방법 더 있을까요??

0

645

1

인프런 환경이 바뀌어서 제나름대로 하는데

0

196

1

다시올려주신 예제파일로하는데

0

190

1

아직도 에러가뜨나보네요?

0

584

1