# 개요

POE2에 사용되는 스킬젬보조 스킬젬을 한글과 영문 이름으로 검색하여 자동 완성으로 표시합니다. 유튜브나 기타 다른 영문 사이트의 가이드를 참조할 때 POE2DB 사이트를 검색하는것보다 훨씬 빠르게 검색이 가능합니다.

부분 문자열을 통해 한글/영문 입력 시 스킬젬 리스트를 검색하는 싱글 검색과 하나의 문자열 안에 여러개의 스킬젬이 포함되어 있을 때 이를 모두 출력하는 멀티 검색으로 나누어져 있습니다.

현재 스킬젬 DB 기준은 2025월 3월 14일 입니다.

# 싱글 검색

# 싱글 검색 사용 방법

  • 스킬젬의 부분 문자열 또는 전체 문자열을 입력하세요
  • 일치하는 모든 스킬젬 / 보조 스킬젬을 검색합니다.
  • 검색 결과 클릭 시 상세 페이지 화면으로 이동합니다.

▣ “Arcane” 입력 시 아래와 같이 검색됩니다.

  • Arcane Surge / 비전 쇄도
  • Arcane Tempo / 비전의 속도

# 멀티 검색

# 멀티 검색 사용 방법

  • 보조젬을 포함한 스킬젬 리스트가 포함된 문자열을 입력하세요
  • 정확한 스킬젬 이름을 입력해야 검색됩니다.(공백은 무시)
  • 검색 결과 클릭 시 상세 페이지 화면으로 이동합니다.

▣ “Contagion - Unleash - Magnified Effect” 입력 시 아래와 같이 검색됩니다.

  • Contagion: 전염
  • Unleash: 촉발
  • Magnified Effect: 강해진 효과

▣ “전염 - 촉발 - 강해진 효과” 입력 시 아래와 같이 검색됩니다.

  • Contagion: 전염
  • Unleash: 촉발
  • Magnified Effect: 강해진 효과

# 코드

아래 코드는 python을 통해 poe2db 사이트의 스킬젬 그리고 보조 스킬젬을 가져오는 코드 입니다. json 형태로 한글과 영문으로 구분하여 출력하고 파일로 저장하는 코드입니다.

import requests
from bs4 import BeautifulSoup
import json

# 대상 URL
skill_url = "https://poe2db.tw/kr/Skill_Gems"
support_skill_url = "https://poe2db.tw/kr/Support_Gems"

# 웹 페이지 요청 및 HTML 파싱
headers = {"User-Agent": "Mozilla/5.0"}

def get_list_from_poe2db_url(url):
    response = requests.get(url, headers=headers)
    
    if response.status_code == 200:
        soup = BeautifulSoup(response.text, "html.parser")

    # class 속성이 'gem_blue'인 <a> 태그 찾기
    skill_gems = soup.find_all("a", class_=["gem_blue", "gem_red", "gem_green","gemitem"])

    gem_list = []

    for gem in skill_gems:
        # <a> 태그 내부에 <img> 태그가 없는 것만 필터링
        if not gem.find("img"):
            skill_name_kor =  gem.text.strip()
            
            skill_name_eng = gem.get("href", "No link").replace('/kr/','')
            skill_name_eng = skill_name_eng.replace('_'," ")
            
            link = 'https://poe2db.tw/' + gem.get("href", "No link")
            
            gem_data = {
                "Name-KR": skill_name_kor,
                "Name-EN": skill_name_eng,
                "Link": link
            }
            gem_list.append(gem_data)
    return gem_list

if __name__ == "__main__":
    skill_gems = get_list_from_poe2db_url(skill_url)
    support_gems = get_list_from_poe2db_url(support_skill_url)
    
    
    result = {
        "SkillGems": skill_gems,
        "SkillGems": support_gems,
    }

    # JSON 출력
    print(json.dumps(result, indent=4, ensure_ascii=False))
    
    # JSON 파일로 저장
    with open("gems.json", "w", encoding="utf-8") as json_file:
        json.dump(result, json_file, indent=4, ensure_ascii=False)

Leave a comment