728x90
반응형

* 본 포스팅은 주피터 노트북에서 진행되었다.

 

Selenium

사용자가 아닌 프로그램이 웹 브라우저를 제어할 수 있게 해주는 라이브러리이다.

서버와 클라이언트로 나누는데, 웹 브라우저 종류마다 클라이언트 프로그램이 별도로 필요하다.  

 

from selenium import webdriver
url = "https://pjt3591oo.github.io"
driver = webdriver.Chrome('chromedriver')
driver.get(url)
selected_link = driver.find_element_by_class_name('p')
print(selected_link)
print(selected_link.tag_name)
print(selected_link.text)

 

selected_selector = driver.find_element_by_css_selector('div.home div.p a')
print(selected_link)
print(selected_link.tag_name)
print(selected_link.text)

 

이제 웹을 제어해 보았다.

 

selected_selector.click() #코드를 이용하여 선택된 항목에 클릭 이벤트

이 코드를 실행하면 자동적으로 

 

위에 명시한 url로 이동한다.

 

키보드 제어

driver = webdriver.Chrome('chromedriver')
url = "https://pjt3591oo.github.io/search"
driver.get(url)
selected_tags_a = driver.find_element_by_css_selector('input#search-box')
selected_tags_a.send_keys('test')

 

자동으로 test를 입력한 search창이 뜬다.

 

 

javascript 실행

 

driver.get(url)
driver.execute_script('alert("test")')

alert 창이 뜬다.

 

url = "https://pjt3591oo.github.io/search"
search_keyword = 'db'
driver = webdriver.Chrome('chromedriver')
driver.get(url)
selected_tag_a = driver.find_element_by_css_selector('input#search-box')
selected_tag_a.send_keys(search_keyword)
selected_tag_a.send_keys(Keys.ENTER) #\UE007로 해도 엔터가 됨
soup = BeautifulSoup(driver.page_source, 'lxml')
items = soup.select('ul#search-results li')

for item in items:
    title = item.find('h3').text
    description = item.find('p').text
    print(title)
    print(description)

 

search에 db를 검색한 결과를 띄어준다. 자동으로 브라우저가 열린다.

728x90
반응형

+ Recent posts