반응형
Ready
▶ BeautifulSoup을 설치한다.
* 주피터 노트북 사용 예
!pip install bs4
▶ Selenium을 설치한다.
Selenium은 웹 브라우저를 컨트롤하여 UI를 Automation하는 도구다.
!pip install selenium
▶ 각종 라이브러리를 불러온다.
import bs4
from bs4 import BeautifulSoup
from selenium import webdriver
import time
import sys
Element Access
HTML코드에 데이터 정보를 가져오기 위한 여러가지 방법이 있다.
▶ id
유니크한 값이다.
# id로 가져온다.
# driver.find_element_by_id("btnMenu").click()
▶ name
중복한 값이다.
▶XPATH
타겟팅에 대한 정확도가 높다.
driver.find_element_by_xpath("/html/body/header/div/div/div/div/span").click()
driver.find_element_by_xpath("//header/div/div/div/div/span").click()
driver.find_element_by_xpath("//span/button[@id='btnMenu']").click()
▶ LINK_TEXT
링크 태그만 가능하다.
# link text로 가져온다.
driver.find_element_by_link_text("특집관").click()
▶Tag name
정확도가 상당히 낮다.
# 제일 위에있는 버튼 태그를 인식해서 가져온다.
driver.find_element_by_tag_name("button").click()
▶ By Class name
# class name으로 가져온다.
driver.find_element_by_class_name("menu_btn").click()
▶ CSS Selector
정확도가 높다.
# css Selector로 가져온다.
driver.find_element_by_css_selector("span.menuBtn").click()
예제
▷ "대한민국 구석구석" 에서 카페 찾기.
# 검색어를 입력받습니다.
keyword = input("검색어를 입력하세요 : ")
path = "./Downloads/chromedriver_mac64/chromedriver"
driver = webdriver.Chrome(path)
# 사파리 사용시
# webdriver.Safari()
driver.get("https://korean.visitkorea.or.kr/main/main.do#home")
time.sleep(1)
driver.find_element_by_class_name("map_go").click()
time.sleep(7)
# 검색창에 입력값 입력.
driver.find_element_by_id("inp_search").click()
element = driver.find_element_by_id("inp_search")
element.send_keys(keyword)
# 엔터 버튼을 눌러 실행합니다.
enter = webdriver.Keys.ENTER
element.send_keys(enter)
# 조건들을 클릭합니다.
driver.find_element_by_xpath("//ul/li[@label='tour']").click()
driver.find_element_by_xpath("//ul/li[@label='food']").click()
driver.find_element_by_xpath("//ul/li[@label='parking']").click()
driver.find_element_by_xpath("//ul/li[@label='hotel']").click()
▷ 구글에 검색하기
# 검색어를 입력받습니다.
keyword = input("검색어를 입력하세요 : ")
path = "./Downloads/chromedriver_mac64/chromedriver"
driver = webdriver.Chrome(path)
# 사파리 사용시
# webdriver.Safari()
# 웹에 주소를 입력합니다.
driver.get("https://www.google.com")
time.sleep(1)
# 검색창을 클릭한뒤 입력받은 키워드를 입력합니다.
driver.find_element_by_xpath("//div/input[@class='gLFyf gsfi']").click()
element = driver.find_element_by_xpath("//div/input[@class='gLFyf gsfi']")
element.send_keys(keyword)
# 엔터 버튼을 눌러 실행합니다.
enter = webdriver.Keys.ENTER
element.send_keys(enter)
▷ 네이버에 로그인 하기
# 네이버 로그인
# 아이디, 비번 입력받기.
keyword_id = input("id를 입력하세요 : ")
keyword_pw = input("pw를 입력하세요 : ")
# 크롬 드라이버 실행
path = "./Downloads/chromedriver_mac64/chromedriver"
driver = webdriver.Chrome(path)
# 웹 주소 입력 및 네이버 실행
driver.get("https://www.naver.com")
time.sleep(1)
# 로그인 버튼 클릭
driver.find_element_by_xpath("//div/a[@class='link_login']").click()
# id 인풋에 id 입력
driver.find_element_by_xpath("//div/input[@id='id']").click()
ele_id = driver.find_element_by_xpath("//div/input[@id='id']")
ele_id.send_keys(keyword_id)
# pw 인풋에 pw 입력
driver.find_element_by_xpath("//div/input[@id='pw']").click()
ele_id = driver.find_element_by_xpath("//div/input[@id='pw']")
ele_id.send_keys(keyword_pw)
# 로그인 버튼 클릭
driver.find_element_by_id("log.login").click()
웹사이트에서 검색후 텍스트 가져오기
▷ naver
# 네이버 검색창에 가을여행 검색해 출력되는 결과중 블로그 섹션의 텍스트를 추출
# 검색결과를 저장할 파일경로와 파일이름 입력
f_name = input("검색결과를 저장할 파일 경로와 이름을 입력하세요(예:/Users/werther/test.txt) : ")
# 크롬 드라이버 실행
path = "./Downloads/chromedriver_mac64/chromedriver"
driver = webdriver.Chrome(path)
# 웹 주소 입력 및 네이버 실행
driver.get("https://www.naver.com/")
time.sleep(1)
search = driver.find_element_by_id("query")
search.send_keys("가을여행")
enter = webdriver.Keys.ENTER
search.send_keys(enter)
driver.find_element_by_link_text("VIEW").click()
driver.find_element_by_link_text("블로그").click()
# 현제 페이지의 html코드를 불러온다. 지금 부터 BeautifulSoup 숲의 영역
full_html = driver.page_source
soup = BeautifulSoup(full_html, "html.parser")
# soud.find('ul', class_ = "list_thumType type1")[0]
contents = soup.find('ul', class_= "lst_total")
# 파일 쓰기
with open(f_name, 'a') as f :
for i in contents :
print(i.text.strip(), file = f)
# 파일 읽기
with open(f_name, "r") as f :
line = f.readlines()
print(line)
▷ daum
# 다음 검색창에 가을여행 검색해 출력되는 결과중 블로그 섹션의 텍스트를 추출
# 검색결과를 저장할 파일경로와 파일이름 입력
f_name = input("검색결과를 저장할 파일 경로와 이름을 입력하세요(예:/Users/werther/test.txt) : ")
# 크롬 드라이버 실행
path = "./Downloads/chromedriver_mac64/chromedriver"
driver = webdriver.Chrome(path)
# 웹 주소 입력 및 네이버 실행
driver.get("https://www.daum.net/")
time.sleep(1)
search = driver.find_element_by_id("q")
search.send_keys("가을여행")
enter = webdriver.Keys.ENTER
search.send_keys(enter)
# 현제 페이지의 html코드를 불러온다. 지금 부터 BeautifulSoup 숲의 영역
full_html = driver.page_source
soup = BeautifulSoup(full_html, "html.parser")
# soud.find('ul', class_ = "list_thumType type1")[0]
contents = soup.find('div', class_= "adLinkColl log_wide")
# 파일 쓰기
with open(f_name, 'a') as f :
for i in contents :
print(i.text.strip(), file = f)
# 파일 읽기
with open(f_name, "r") as f :
line = f.readlines()
print(line)
# 구글 검색창에 가을여행 검색해 출력되는 결과중 블로그 섹션의 텍스트를 추출
# 검색결과를 저장할 파일경로와 파일이름 입력
f_name = input("검색결과를 저장할 파일 경로와 이름을 입력하세요(예:/Users/werther/test.txt) : ")
# 크롬 드라이버 실행
path = "./Downloads/chromedriver_mac64/chromedriver"
driver = webdriver.Chrome(path)
# 웹 주소 입력 및 네이버 실행
driver.get("https://www.google.com/webhp?hl=ko&sa=X&ved=0ahUKEwiMk5mRkZH6AhXUEXAKHTEzAWUQPAgI")
time.sleep(1)
search = driver.find_element_by_xpath("//div/input[@class='gLFyf gsfi']")
search.send_keys("가을여행")
enter = webdriver.Keys.ENTER
search.send_keys(enter)
time.sleep(2)
# 현제 페이지의 html코드를 불러온다. 지금 부터 BeautifulSoup 숲의 영역
full_html = driver.page_source
soup = BeautifulSoup(full_html, "html.parser")
# soud.find('ul', class_ = "list_thumType type1")[0]
contents = soup.find('div', class_= "v7W49e")
# 파일 쓰기
with open(f_name, 'a') as f :
for i in contents :
print(i.text.strip(), file = f)
# 파일 읽기
with open(f_name, "r") as f :
line = f.readlines()
print(line)
반응형
'Python' 카테고리의 다른 글
[Python] numpy (0) | 2022.09.22 |
---|---|
[Python] Anaconda 가상환경 생성 (0) | 2022.09.21 |
[Python] CRAWLING - BeautifulSoup (0) | 2022.09.13 |
[python] WEB CRAWLING (1) | 2022.09.08 |
[python] Module (0) | 2022.09.06 |