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
반응형
728x90
반응형

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

 

[ 용어 정리 ]

크롤링(crawling) 혹은 스크레이핑(scraping)은 웹 페이지를 그대로 가져와서 거기서 데이터를 추출해 내는 행위다. 크롤링하는 소프트웨어는 크롤러(crawler)라고 부른다.

 

requests와 bs4를 이용하여 크롤러를 만들 수 있지만 자바스크립트의 동작이 많은 웹 사이트일 경우 한계가 있기 때문에 selenium을 사용한다.

 

chrome driver가 필요한데 만약 설치가 안되어 있다면 아래 포스팅을 참고하면 좋을 것이다.

 

2021.06.09 - [Data Analysis/web crawling] - [Crawling] 크롬 드라이버(ChromeDriver) 설치하기

 

[Crawling] 크롬 드라이버(ChromeDriver) 설치하기

chrome driver를 설치한다. https://chromedriver.chromium.org/downloads ChromeDriver - WebDriver for Chrome - Downloads Current Releases If you are using Chrome version 91, please download ChromeDrive..

hello-ming.tistory.com

 

from selenium import webdriver
url = "https://pjt3591oo.github.io"
driver = webdriver.Chrome('chromedriver')
driver.get(url)

브라우저가 자동으로 열린다.

 

만약 selenium이 없다면 아래의 코드를 이용하면 된다.

!pip install selenium

 

요소를 가져오자

selected_id = driver.find_element_by_id('nav-trigger') #id로 요소 선택
print(selected_id)
print(selected_id.tag_name) #태그명
print(selected_id.text) #태그에 속한 문자

 

selected_p = driver.find_element_by_tag_name('p') #id로 요소 선택
print(selected_p)
print(selected_p.tag_name) #태그명
print(selected_p.text) #태그에 속한 문자

 

selected_tags_p = driver.find_elements_by_tag_name('p') #id로 요소 선택
print(selected_tags_p)

 

selected_link = driver.find_element_by_class_name('p')
print(selected_link)
print(selected_link.tag_name)
print(selected_link.text)

 

 

728x90
반응형

+ Recent posts