가끔 크롤링 하다보면 테이블 행 a tag에 링크가 있고 그 링크 안의 데이터를 수집해서 다시 원본 탭으로 돌아오고 싶을 때가 있다.
그럴 때 쓰기 좋은 스크립트를 작성하였으니 참고 하고 입맛에 맏게 수정해서 쓰기 바란다.
새로운 탭 열고 func 수행 후 탭 닫고 복귀
from selenium import webdriver
import time
driver = webdriver.Chrome('./chromedriver.exe', options=options)
driver.get('https://www.google.com/')
def openNewTabNExecuteFunction(driver, tabIndex, url, func):
# Open a new window
driver.execute_script(f"window.open('{url}','_blank')")
# Switch to the new window
driver.switch_to.window(driver.window_handles[tabIndex])
# time to sleep
result = func(driver, url)
driver.implicitly_wait(3)
# time.sleep(1)
# Close new tab
driver.close()
# Switching to old tab
driver.switch_to.window(driver.window_handles[0])
return result
openNewTabNExecuteFunction(driver, 1, "https://www.google.com", getBranchName)
func 예제
from selenium.webdriver.common.by import By
'''
element(단일) , elements(복수) 설명
By.ID 태그의 id값으로 추출
By.NAME 태그의 name값으로 추출
By.XPATH 태그의 경로로 추출
By.LINK_TEXT 링크 텍스트값으로 추출
By.PARTIAL_LINK_TEXT 링크 텍스트의 자식 텍스트 값을 추출
By.TAG_NAME 태그 이름으로 추출
By.CLASS_NAME 태그의 클래스명으로 추출
By.CSS_SELECTOR css선택자로 추출
'''
def getBranchName(driver, _url):
try:
rText = ''
driver.implicitly_wait(5)
driver.get(_url)
driver.implicitly_wait(5)
#특정 ID 명을 찾아 그 값을 리턴
element = driver.find_element(By.ID,'SIvCob')
if not element:
print('no element')
else:
# print(element.text)
rText = element.text
return rText
except:
print("ERROR MESSAGE: NO ELEMENT FOUND")
반응형
사업자 정보 표시
라울앤알바 | 장수호 | 서울특별시 관악구 봉천로 13나길 58-10, 404호(봉천동) | 사업자 등록번호 : 363-72-00290 | TEL : 010-5790-0933 | Mail : shjang@raulnalba.com | 통신판매신고번호 : 2020-서울관악-0892호 | 사이버몰의 이용약관 바로가기
'programmer > python' 카테고리의 다른 글
[conda] jupyterlab - git extension 설치 방법 (0) | 2022.04.10 |
---|---|
python to elasticsearch (0) | 2022.03.03 |
Python DateTime 변환(날짜 양식 변환) (1) | 2022.02.22 |
[docker] jupyter-notebook 설치 (0) | 2022.02.01 |
Telegram API 사용해 보기 (0) | 2022.01.17 |