인프런 커뮤니티 질문&답변

손과발님의 프로필 이미지

작성한 질문수

[2024 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)

크롤링시 한글 부분이 이상한 문자로 나옵니다.

작성

·

19

0

비방폭 ì›ì ì™¸ì„ ížˆí„° 385,000 https://jungjinmall.co.kr/upload/goods/zoom/20210205160000038257.jpg

비방폭 ì›ì ì™¸ì„ ížˆí„° 341,000 https://jungjinmall.co.kr/upload/goods/zoom/20231030155656934669.jpg

비방폭 ì›ì ì™¸ì„ ížˆí„° 341,000 https://jungjinmall.co.kr/upload/goods/zoom/20211027134042544371.jpg

비방폭 ì›ì ì™¸ì„ ížˆí„° 470,000 https://jungjinmall.co.kr/upload/goods/zoom/20211027135531115129.jpg

비방폭 ì›ì ì™¸ì„ ížˆí„°

 

 

안녕하세요 강사님

 

위에 쇼핑몰 상품을 크롤링 해서 프린트한 내용인데요 상품명, 가격, 이미지

근데 상품명 부분이 한글로 나와야 되는데 위와 같이 이상한 형태로 나타납니다.

이걸 어떻게 하면 해결 할 수 있을 까 이리저리 다 찾아봐도 해결 할 수가 없어 문의를 드립니다.

 

번거롭지만 어떻게 하면 해결 할 수 있는지 알려 주시면 감사하겠습니다.

 

 

답변 1

0

스타트코딩님의 프로필 이미지
스타트코딩
지식공유자

안녕하세요!
한글이 깨지는 것은 인코딩 문제인데요

서버에서 돌려준 응답을

utf-8이나 euc-kr 등으로 다시 인코딩하는 형태로 개발해보시면 좋을 거 같습니다.

 

그리고 전체 코드를 첨부해주시면 저도 테스트 해볼게요 ^^

손과발님의 프로필 이미지
손과발
질문자

강사님 빠른 답변 감사합니다.

이제 막 강의 듣고 파이썬을 접하다 보니 문제가 생기면 뭘 어떻게 해결해야 될지 감이 안오니 이렇게 재차 질문하게 됩니다. 인코딩 문제를 해결하기 위해 어떤 것을 설치해야 되는지 아님 무엇을 임포트 해야 되는지 환경설정 어느 부분에 쳇크나 해제해야 되는지 모르겠어요 일단 전체 코드를 올려봅니다.

 

"

import requests

from bs4 import BeautifulSoup

import pandas as pd

data = []

url = "https://jungjinmall.co.kr/shop/index.php?category=C1625644964"

url1 ="https://www.seahtool.com/goods/goods_list.php?cateCd=020001"

response = requests.get(f"{url}")

html = response.text

soup = BeautifulSoup(html, 'html.parser')

items = soup.select(".output-skin01.p1")

name = soup.select_one('.ellipsis').text

for i in items:

link = i.select_one('.pv1 > a').attrs['href']

response = requests.get(f"https://jungjinmall.co.kr{link}")

html = response.text

soup = BeautifulSoup(html, 'html.parser')

#name = soup.select_one('.f5.pv3').text

price = soup.select_one('.strong.money').text

image = soup.select_one('.margintb5.border-1-s-ccc').attrs['src']

image1 =f"https://jungjinmall.co.kr{image}"

print(name ,price, image1)

"

 

 

스타트코딩님의 프로필 이미지
스타트코딩
지식공유자

import requests
from bs4 import BeautifulSoup
import pandas as pd

data = []

url = "https://jungjinmall.co.kr/shop/index.php?category=C1625644964"
url1 ="https://www.seahtool.com/goods/goods_list.php?cateCd=020001"

response = requests.get(f"{url}")
html = response.text
soup = BeautifulSoup(html, 'html.parser')

items = soup.select(".output-skin01.p1")

for i in items:
    link = i.select_one('.pv1 > a').attrs['href']
    response = requests.get(f"https://jungjinmall.co.kr{link}")
    response.encoding = 'utf-8'
    html = response.text
    soup = BeautifulSoup(html, 'html.parser')

    name = soup.select_one('.f5.pv3').text.strip()
    price = soup.select_one('.strong.money').text
    image = soup.select_one('.margintb5.border-1-s-ccc').attrs['src']
    image1 =f"https://jungjinmall.co.kr{image}"
    print(name ,price, image1)

이런식으로 response.encoding을 utf-8 로 맞춰 주면 정상적으로 한글이 깨지지 않고 표시가 됩니다 :)

손과발님의 프로필 이미지
손과발
질문자

아이구야 되네요 !!!! 뭐라 감사의 말씀을 드려야 될지 넘 감사합니다. 카페도 가입했고 동영상 강의도 제가 이해하는데 넘 꼭 맞는 것같아 차례로 듣고 있어요 다시 한 번 감사의 말씀을 드립니다.

스타트코딩님의 프로필 이미지
스타트코딩
지식공유자

도움이 되셨다니 다행이네요 ㅎㅎ

 

카페에 가입하셨다니

질문게시판이나 코딩인증게시판 등을 활용해서

추가적인 도움이나 동기부여를 얻어 보시고

 

간단한 프로그램이라도 만드시면

좋은 소식 자랑게시판에 편하게 올려보세요~~!

인정받는 느낌을 통해 배움을 지속하는데 큰 도움이 될겁니다 ㅎㅎ