셀레니움

파이썬 작업스케줄러 할 때 주의점(셀레니움/schedule모듈)
셀레니움으로 짠 파이썬 코드를 작업스케줄러로 돌리니 자꾸 에러가 났다. cmd로 돌리기 때문에 그런 것 같다. 솔직히 아 그런가 하고 headless 해보니 잘 됐다. 개꿀 options = webdriver.ChromeOptions() options.add_argument("headless") driver = webdriver.Chrome('C:\chromedriver99.exe', options=options) headless 옵션을 넣어주면 창을 안켜기 때문에 cmd에서도 잘 돌아간다. 끝! 인줄알았는데 autoit이랑 이것저것 쓰려다보니 headless로는 안됐고, 작업스케줄러는 무조건 백그라운드 재생이다보니 계속 에러가나서 미치는줄 알았다. 별의 별 방법을 다 했지만 결국 안됐다. ..

textarea 내용 크롤링 잘 안될 때
셀레니움으로 크롤링 할 때 textarea 내용이 안따져서 찾아보니 js로 value 값을 받아와야한다. 이렇게 있다고 치면 보통은 xpath로 받아서 해야하는데 클릭이 안된다. driver.find_element_by_xpath('//*[@id="content"]').click() 개발자도구에서 해보니 value값으로 선택되길래 이렇게 해결! driver.execute_script("document.getElementsByTagName('textarea')[0].value=\'" + 변수명 + "\'") 또는 driver.execute_script("document.getElementsById('content').value=\'" + 변수명 + "\'")
셀레니움 스크롤 끝까지 내리기
#셀레니움 스크롤 끝까지 내려도 계속 내리는 페이지라면 prev_height = browser.excute_script("return document. body.scrollHeight") import time while True: #첫번째로 스크롤 내리기 browser.excute_script("window.scrollTo(0,document.body.scrollHeight)") #시간대기 time.sleep(2) #현재높이 저장 current_height = browser.excute_script("return document. body.scrollHeight") #현재높이와 끝의 높이가 끝이면 탈출 if current_height == prev_height: break #업데이트해줘서 끝낼 수 있도록..
크롤링 영어 나올 때 한글로 바꾸기
맞게 쳤는데도 잘 안될 때 이렇게 페이지를 다운받아서 켜보면 내가 보는 창과 다른 경우가 있다. with open('movie.html', 'w', encoding="utf-8-sig") as f: f.write(soup.prettify()) #html문서 예쁘게 이는 내가 접속하는 페이지에서, 헤더가 다르거나, 언어가 다르면 다른 방식으로 뿌려주기 때문이다. 따라서 내가 사용하고 있는 브라우저와 언어를 맞춰줘야한다. #한글페이지 요청 headers = { "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Whale/2.9.116.15 Safari..

셀레니움 크롤링 값이 안나올 때(text)(frame)
셀레니움에서 크롤링 코드 맞게쳤는데도 값이 안나오면 프레임이 있는지 확인해보고 바꿔줘야함. 셀레니움이 참 멍청한건지 프레임이 다르면 값을 가져오질 못하더라고... 그래서 프레임을 변경해줘야한다. # 메인프레임변경해주기 driver.switch_to.frame('coinfo_cp') 예시) 네이버 금융 재무재표 가져올 때 기존 코드 from bs4 import BeautifulSoup from selenium import webdriver driver = webdriver.Chrome('C:\chromedriver99.exe') url = 'https://finance.naver.com/item/coinfo.naver?code=000660' driver.get(url) # 유보율 xpath ubo = ..