728x90
Dynamic Web Page
- 정적 웹페이지
- 서버에 미리 저장된 파일(HTML, JavaScript 등)이 그대로 전달되는 웹페이지
- 보여지는 화면이 바뀌지 않음
- Client가 요청하면 페이지를 그대로 전송 (응답)
- 누가, 언제 접속해도 동일한 내용을 보여줌 (서버에 저장된 데이터가 변경되지 않는다는 가정)
- 동적 웹페이지
- 서버에 있는 데이터를 스크립트에 의해 가공하여 전달하는 웹페이지
- 보여지는 화면이 계속 바뀜
- Client의 요청을 해석하여 데이터를 가공해 전송 (응답)
- 누가, 언제 접속하느냐에 따라 다른 내용을 보여줌
Selenium을 활용한 동적 웹페이지 Crawling
<예시 > Selenium 패키지로 재벌집 막내아들 75화의 댓글 긁어오기
## Selenium 패키지 Import
from selenium import webdriver
## webdriver 불러오기
driver = webdriver.Chrome('D:\MyWorkspace\chromedriver.exe')
## 페이지 로드를 위해 기다리는 시간
driver.implicitly_wait(3)
## scraping하려는 웹페이지 주소를 get()에 전달
url = 'https://comic.naver.com/webtoon/detail?titleId=800770&no=75'
driver.get(url)
## 태그를 탐색할 수 있는 Selenium의 By 모듈 import
from selenium.webdriver.common.by import By
## html 태그 중 Class 이름이 u_cbox_contents 인 부분 탐색
tmp = driver.find_elements(By.CLASS_NAME, 'u_cbox_contents')
## 출력
results = []
for x in tmp:
results.append(x.text)
print(results)
Selenium 패키지의 다양한 기능
1) 화면 클릭하기
## 전체댓글 보기 버튼 클릭
more_reply = driver.find_element(By.ID, 'cbox_module_wai_u_cbox_sort_option_tab2')
more_reply.click()
## BEST댓글 보기 버튼 클릭
best_reply = driver.find_element(By.ID, 'cbox_module_wai_u_cbox_sort_option_tab1')
best_reply.click()
print(more_reply.text)
print(best_reply.text)
2) 키 입력하기
driver = webdriver.Chrome('D:\MyWorkspace\chromedriver.exe')
# 페이지 로드를 위해 기다리는 시간
driver.implicitly_wait(3)
# scraping하려는 웹페이지 주소를 get()에 전달
url = 'https://www.google.com'
driver.get(url)
## 검색 창에 해당하는 요소를 찾는다 (By XPATH)
search_box = driver.find_element(By.XPATH, '//*[@id="APjFqb"]')
## 검색창에 원하는 검색어를 입력한다
search_box.send_keys('챗GPT')
from selenium.webdriver.common.keys import Keys
search_box.send_keys(Keys.RETURN)
728x90
반응형
'NLP' 카테고리의 다른 글
[NLP] Similarity, 문서 유사도 측정 (0) | 2024.07.06 |
---|---|
[NLP] Text Data Preprocessing (0) | 2024.07.02 |
[NLP] 정규 표현식, Regular Expression (0) | 2024.07.01 |
[NLP] API를 활용한 Web Crawling (0) | 2024.06.29 |
[NLP] Web Scraping, BeautifulSoup (0) | 2024.06.27 |
[NLP] 자연어처리 토큰화작업 2, 하위 단어 토큰화 (0) | 2024.03.13 |
[NLP] 자연어처리 토큰화작업(KoNLPy, NLTK, SpaCy) (2) | 2024.03.07 |
[NLP] 파이토치(Pytorch)를 이용한 텍스트 데이터 증강 (0) | 2024.02.29 |