웹 자동화 프로그램 만들기 3 - 검색하기, [ 키보드 자판입력 ( 키입력 ), 속성만으로는 구분이 안되는 태그들 중에서 원하는 태그 구분해서 가져오기( xPath 경로사용 ) , 또는 ( css_select 사용 )]

하이루·2022년 7월 7일
0

검색하기

전체 코드

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

driver = webdriver.Chrome("./chromedriver")

driver.get("https://www.google.co.kr/")

driver.find_element(By.NAME,"q").send_keys("하늘 땅 별 땅")
# 검색창에 검색어 입력

driver.find_element(By.NAME,"q").send_keys(Keys.ENTER)
# 검색창에 Enter 키 입력

driver.find_element(By.XPATH,"//*[@id='hdtb-msb']/div[1]/div/div[4]").click()
# 뉴스 카테고리 클릭

태그 찾기 -> 기본적인 태그 찾는 건 이전 게시물에 있으니 참고

키입력 -> Enter

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

driver = webdriver.Chrome("./chromedriver")
driver.get("https://www.google.co.kr/")

driver.find_element(By.NAME,"q").send_keys("하늘 땅 별 땅")
# 검색창에 검색어 입력

driver.find_element(By.NAME,"q").send_keys(Keys.ENTER)
# 검색창에 Enter 키 입력

키와 관련된 함수들은 selenium 라이브러리의 selenium.webdriver.common.keys 위치에 있으므로
import해서 가져온다.

이후 이전에 값을 입력하는 부분에 키를 입력하여 넣어주면 된다.


속성만으로는 구분이 안되는 태그들 중에서 원하는 태그 구분해서 가져오기

--> 태그를 구별해야할 경우에 필요에 따라 쓰면 됨
--> 둘다 크게 차이 없음

1. xPath 경로 사용

  • 아래의 예시를 보면 해당 태그들은 id속성이 없고, Name속성도 없으며 class속성의 값도 같은 것이 보일 것이다.
    --> 여기서 해당 태그를 구분하여 가져오는 방법이 있다.

  1. 먼저 파이참 프로그램을 통해 브라우저를 연다
    ( 일반적인 브라우저 실행하듯이 접근하면 이 방법은 불가능하다. -> 파이참 프로그램을 통해서 브라우저를 열어야한다. )

  2. 구분하여 가져올 태그에 우클릭 ( 파이참을 통해 안 열면 여기서 우클릭이 안된다. )
    --> 이후 xPath값을 복사한다.

  3. xPath경로를 사용하여 태그를 식별

driver.find_element(By.XPATH,"//*[@id="hdtb-msb"]/div[1]/div/div[4]")

# 위와같이 바로 붙여넣을 경우 안쪽에 ""가 있기 때문에 문법적으로 오류가 발생함
# 따라서 아래와 같이 "hdtb-msb"와 같은 부분을 ''을 사용한 'hdtb-msb'으로 바꿔주어야 정상적으로 인식됨

driver.find_element(By.XPATH,"//*[@id='hdtb-msb']/div[1]/div/div[4]")

2. css selector 사용

태그를 특정하기 위해 전 게시물과 같이 파이참에서 사이트를 열어야한다.

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

driver = webdriver.Chrome("./chromedriver")

driver.get("https://www.google.co.kr/")

driver.find_element(By.CSS_SELECTOR,"#gb > div > div:nth-child(1) > div > div:nth-child(2) > a").click()
profile
ㅎㅎ

0개의 댓글