Notice
Recent Posts
Recent Comments
Links
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Today
In Total
관리 메뉴

A Joyful AI Research Journey🌳😊

*[3] 241101 Konply, Selenium [Goorm All-In-One Pass! AI Project Master - 4th Session, Day 3] 본문

🌳AI & Quantum Computing Bootcamp✨/AI Lecture Revision

*[3] 241101 Konply, Selenium [Goorm All-In-One Pass! AI Project Master - 4th Session, Day 3]

yjyuwisely 2024. 11. 1. 13:07

241101 Fri 3rd class

오늘 배운 것 중 기억할 것을 정리했다.


면접 때 말로 설명한다. 
가능성을 보고 뽑아줄 수는 있다. 

프로젝트만X

이론도 중요하다.

원리를 알면 쉽게 접근한다. 

공부할 때 고민할 시간 가지기, 어떻게 풀지 고민, 검색하기, 생각을 한다. 

알고리즘 짜보기, 늘어남 

ChatGPT 의존 사태가 일어날 수 있다. 

못하는 거 잡아내고, 컨트롤하려면 지식 있어야 한다. 

많이 공부 -> 해결책을 안다. (ex. nltk)

인기 있는 거 쫓아서 공부하면 중요한 걸 공부X

2,3년차 엔지니어 -> 기본 모르는 경우 있다. -> 오래가지 못한다.

LLM 전이학습 


마지막 프로젝트는 팀 별로 한다. 실습하기 

서비스를 하려면 기본적인 지식이 있어야 한다. 

새로운 프로젝트 같은 데 원리가 비슷하다. 

기본을 알면 / 하나를 제대로 알면 응용해서 만들 수 있다. 

토큰, 불용어 등 알아야 한다. 

HTML -> w3schools.com 좋음

주식 투자 -> 웹크롤링 -> 도움 됨 
엑셀표 자동 정리 


https://ldjwj.github.io/CLASS_PY_LIB_START/PYLIB_03_01_konlpy_nltk_v01_2411.html

 

unit01_01_konlpy_nltk_v01_2411

1-3 konlpy 설치 및 소개¶ 한국어 자연어 처리 라이브러리: konlpy는 한국어 텍스트를 처리하기 위한 파이썬 라이브러리로, 형태소 분석, 품사 태깅, 구문 분석 등의 기능을 제공합니다. 다양한 형태

ldjwj.github.io


!pip install konlpy
import nltk
import matplotlib.pyplot as plt
import numpy as np
import konlpy


import nltk 
import matplotlib.pyplot as plt
import numpy as np 
import konlpy 
from konlpy.tag import Kkma

4-4 konlpy.tag.Okt 실습해 보기

# KoNLPy 라이브러리 설치가 필요하다면 주석을 제거하고 실행하세요
# !pip install konlpy

from konlpy.tag import Okt

# 1. 분석기 객체 생성
okt = Okt()

# 예제 텍스트
text = "한국어 텍스트 데이터 분석은 자연어 처리에서 중요한 부분입니다."

# 2. 토큰화 (형태소 분석)
tokens = okt.morphs(text)
print("토큰화 결과:", tokens)

# 3. 품사 태깅
pos_tags = okt.pos(text)
print("품사 태깅 결과:", pos_tags)

# 4. 불용어 제거
# 불용어 리스트 (필요에 따라 확장 가능)
stopwords = ["은", "는", "이", "가", "에서", "부분", "입니다"]

# 불용어가 제거된 단어 리스트 생성
filtered_tokens = [word for word in tokens if word not in stopwords]
print("불용어 제거 결과:", filtered_tokens)

[레벨업 문제1] txt를 불러와서 이를 Kkma로 분석해 보자.

[레벨업 문제2] Hannanum로 분석해 보자.


nltk: 토큰을 분류해주는 모델 다운 받아 사용

!pip install nltk

https://platform.openai.com/tokenizer

nltk.download('punkt')

코퍼스: 특정 언어 또는 주제에 대한 텍스트의 모음


STT 음성 

형용사 빈도 분석 -> 사람 성향 판단 
연설문, 단어 사용, 어휘력 풍부 등 -> 분석


VSCode에서 Colab 연결

https://dogfoot1.tistory.com/92

 

[VSCode] ipynb 사용하기

jupyter notebook 확장 팩을 설치한다 cmd에서 pip install jupyter  ipynb 파일 생성 select kernel을 선택 Python Environments 선택하고 자신이 원하는 python 환경 클릭  그러면 VSCode에서 ipynb 실행 가능합니다

dogfoot1.tistory.com

 

pip install selenium
pip install webdriver-manager

요소 찾기

하나의 DOM(객체)에 접근 - element

from selenium.webdriver.common.by import By  

find_element(By.ID, "element_id"): 요소의 고유 ID로 찾기
find_element(By.NAME, "element_name"): 요소의 name 속성으로 찾기
find_element(By.XPATH, "//div[@class='element']"): XPath 표현식으로 찾기
find_element(By.LINK_TEXT, "Link Text"): 링크의 가시적인 텍스트로 찾기
find_element(By.PARTIAL_LINK_TEXT, "Partial Link"): 링크의 부분 텍스트로 찾기
find_element(By.TAG_NAME, "div"): HTML 태그 이름으로 찾기
find_element(By.CLASS_NAME, "element_class"): CSS 클래스 이름으로 찾기
find_element(By.CSS_SELECTOR, "div.element"): CSS 선택자로 찾기​
 

여러개의 DOM(객체)에 접근 - elements

from selenium.webdriver.common.by import By  

find_elements(By.NAME, "name"): 요소의 name 속성으로 여러 개의 요소를 찾습니다.
find_elements(By.XPATH, "xpath"): XPath 표현식을 사용하여 여러 개의 요소를 찾습니다.
find_elements(By.LINK_TEXT, "text"): 링크의 가시적인 텍스트로 여러 개의 요소를 찾습니다.
find_elements(By.PARTIAL_LINK_TEXT, "text"): 링크의 부분 텍스트로 여러 개의 요소를 찾습니다.
find_elements(By.TAG_NAME, "tag"): HTML 태그 이름으로 여러 개의 요소를 찾습니다.
find_elements(By.CLASS_NAME, "class"): CSS 클래스 이름으로 여러 개의 요소를 찾습니다.
find_elements(By.CSS_SELECTOR, "css"): CSS 선택자를 사용하여 여러 개의 요소를 찾습니다.​

https://ldjwj.github.io/CLASS_PY_LIB_START/CL03_01_selenium_basic_V11.html

 

CL03_01_selenium_basic_V11

a태그(anchor tag)의 link text로 접근하려고 할때 사용. 안녕하세요! Continue Cancel find_element(By.LINK_TEXT, '') find_element(By.PARTIAL_LINK_TEXT, '')

ldjwj.github.io

from selenium.webdriver.common.by import By
select_id = driver.find_element(By.ID, 'rank')
print(select_id)
print(select_id.text)

결과)
<selenium.webdriver.remote.webelement.WebElement (session="3f8ca0841e16ae6ab12a480d0b6d218e", element="f.2985483FCEEE8B67D80A7646DF8E012E.d.F3E6E49034E1E8C7C8D999B464268F27.e.96")> 10. 랭킹 정보 가져오기(웹 크롤링)


sel_tag_h1 = driver.find_element(By.TAG_NAME, 'h1')
print(sel_tag_h1.text)
print(sel_tag_h1)

my web page <selenium.webdriver.remote.webelement.WebElement (session="3f8ca0841e16ae6ab12a480d0b6d218e", element="f.2985483FCEEE8B67D80A7646DF8E012E.d.F3E6E49034E1E8C7C8D999B464268F27.e.76")>


[실습 1] a태그 정보 가져오기
 
[레벨업 실습 1] a태그 전부 가져오기
 
sel_tag_a1 = driver.find_elements(By.TAG_NAME, 'a')

print(type(sel_tag_a1) )

for one in sel_tag_a1:
    print(one.text)

결과) 

<class 'list'>
01. 제목 가져오기(title)
02. 텍스트 가져오기(p)
03. 링크 가져오기(a)
04. 이미지 정보 가져오기(img)
05. 리스트 정보 가져오기(ul,ol)
06. id를 활용한 정보 획득
07. class를 활용한 정보 획득
08. 하나의 이미지 다운로드
09. 여러개의 이미지 다운로드
10. 랭킹 정보 가져오기(웹 크롤링)

from selenium import webdriver  
from selenium.webdriver.common.by import By  

url = 'https://news.naver.com/'  

# 웹 드라이버를 사용하여 지정된 URL로 이동합니다.  
driver.get(url)

검색창: //*[@id="u_hs"]/div/div/input

돋보기: //*[@id="u_hs"]/div/div/button[2]

통합검색: //*[@id="u_hs"]/button[1]

from selenium.webdriver.common.by import By  

# 검색 아이콘 요소 찾기 
# /html/body/section/header/div[1]/div/div/div[2]/div[3]/a 
search_icon = driver.find_element(By.XPATH, '/html/body/section/header/div[1]/div/div/div[2]/div[3]/a')  
print(search_icon.tag_name)  
print(search_icon.text)  
search_icon.click()  


# 검색창 요소 찾기  
# //*[@id="u_hs"]/div/div/input
search_input = driver.find_element(By.XPATH, '//*[@id="u_hs"]/div/div/input')  
print(search_input.tag_name)  
print(search_input.text)  

# 검색 버튼 요소 찾기
# //*[@id="u_hs"]/div/div/button[2]  
search_button = driver.find_element(By.XPATH, '//*[@id="u_hs"]/div/div/button[2]')  
print(search_button.tag_name)  
print(search_button.text) 

# 검색어 입력 및 검색 실행  
search_input.send_keys("패션")  
search_button.click()

결과)


실습1 - 정보를 가져와 보기
 
텍스트 파일로 가져온다.
path = '//*[@id="ct"]/div/section[1]/div[2]/ ... '
sel_xpath = driver.find_element(By.XPATH, path)
print(sel_xpath.text)

 
실습 2- 뉴스 제목 리스트 가져오기
import time

# 현재 탭 핸들 저장
current_tab = driver.current_window_handle  
print(current_tab)

# 모든 탭 핸들 가져오기  
all_tabs = driver.window_handles  
print(all_tabs)

# 새로운 탭으로 전환  
for tab in all_tabs:  
    if tab != current_tab:  
        driver.switch_to.window(tab)  
        break  

# 새로운 탭에서 URL 가져오기  
time.sleep(2)  # 페이지 로딩 대기  
current_url = driver.current_url  
print("새로운 탭의 URL:", current_url)

결과)

2985483FCEEE8B67D80A7646DF8E012E
['2985483FCEEE8B67D80A7646DF8E012E', '51ABD8E439E25B4FCECDA7B1DC8807E8', '262E1EF0F66D8B7B4E75B29EE6A9B121']
새로운 탭의 URL: https://search.naver.com/search.naver?where=news&ie=utf8&sm=nws_hty&query=%ED%8C%A8%EC%85%98
## 검색결과 창에서 정보가져오기
# //*[@id="sp_nws1"]/div[1]/div/div[2]/a[2]
 
path = '//*[@id="sp_nws1"]/div[1]/div/div[2]/a[2]'
sel_xpath = driver.find_element(By.XPATH, path)
print(sel_xpath.text)

결과)

꽃모양 브로치만 1억…'헉' 소리 나는 지드래곤 패션 화제

728x90
반응형
Comments