개발/파이썬 업무 자동화

파이썬 - 웹 크롤링 및 Unicode

이게될까 2024. 2. 23. 00:01
728x90
728x90

웹 크롤링 - 웹상의 문서, 정보를 모은다.

초성퀴즈 제작하기
Uni-code

AC00 -> 이건 16진수 이다.

이제 초성퀴즈를 만들어 보자!

import requests
from bs4 import BeautifulSoup # 원하는 정보 추출하는 용!
import random

consonants  = {'ㄱ' : 44032, 'ㄴ':45208, 'ㄷ':45796, 'ㄹ' : 46972, 'ㅁ':47560, 'ㅂ' : 48148} # 유니코드를 10진수로

life = 3
score = 0
ls = [] # 단어 리스트 중복 방지
# 자음을 랜덤하게 뽑아야된다.


while life > 0:
    consonants1 = list(consonants.keys())[random.randint(0,len(consonants)-1)]
    consonants2 = list(consonants.keys())[random.randint(0,len(consonants)-1)]
    print("life :", life, "\tscofe :",score)
    print(f"{consonants1}{consonants2}: ",end = '') # 엔터 없이 끝날 수 있도록

    # 이제 입력을 받아야 하는데 두글자를 받아야 하낟.
    user = input()

    if len(user )== 2:
        # ㄱㄷ : 구두 -> 맞는지 확인하려면 자음을 구해줘야 한다.
        user1 = ord(user[0]) - ((ord(user[0]) - 520)%588)#아스키 코드값을 수해주는 함수이다.
        user2 = ord(user[1]) - ((ord(user[1]) - 520)%588)
        if consonants[consonants1] == user1 and consonants[consonants2] == user2 :
            # 이제 웹 크롤링이 필요하다!
            r = requests.get(f'https://dic.daum.net/search.do?q={user}')
            soup = BeautifulSoup(r.text,"lxml")
            
            # 사용한 적 있는 단어있는지 확인
            if not user in ls :
                if len(soup.select(".txt_emph1")) > 0 and soup.select(".txt_emph1")[0].text.strip() == user:
                    score +=100
                    ls.append(user)
                else:
                    print("error:유효하지 않는 단어입니다.")
                    life -=1
            else:
                print("error:이미 사용했던 단어입니다.")
                life -=1    
        else:
            print("error : 글자 수가 맞지 않습니다.")
            life -=1
            
    else:    
        print("error : 글자 수가 맞지 않습니다.")
        life -=1
728x90