GOOD4ME
[Selenium] ValueError: not enough values to unpack (expected 2, got 1) 본문
[Selenium] ValueError: not enough values to unpack (expected 2, got 1)
de_youn 2022. 11. 21. 21:22야후 파이낸스에서 크롤링 테스트를 마치고, 적재가 잘 되는지 확인하기 위해
평일마다 크롤링 모듈을 돌려보았다.
지난주 금요일(2022-11-18),
여느 날처럼 퇴근 후, 크롤링 모듈을 돌려보았는데 아래처럼 갑자기 오류가 발생한다❓❓❓
...
ValueError: not enough values to unpack (expected 2, got 1) ~
...
문제 파악
2개의 값을 예상하였으나, 1개의 값만 가져와서 발생한 것으로 추정되는데...
find_element_by_xpath() 함수로 특정 element의 값을 가져온 후,
특정 문자를 기준으로 split()시켜, 두 변수에 따로 담게 해놨으니 에러의 이유는 납득이 간다.
그래서 그 부분을 직접 출력해보았으나, 공백으로 출력이 된다❓❓
아니 뭐야... 혹시 몰라서 상위 클래스를 대상으로 값을 출력하도록 했는데,
뭔 "Full screen" 이라는 생판 처음 보는 문자열이 출력이 되는 것이었다....
아직 element가 로딩되지 않은 줄 알고, time.sleep() 과 명시적/암묵적 페이지 로딩을 걸어주었으나,
이것으로도 해결되지 않았다😂😂
문제 해결
무슨 짓을 해도 해결이 안되서, webdriver의 ChromeOptions()에 '--headless' 옵션을 빼고,
도대체 무슨 짓거리를 하길래 크롤링이 안될까 실험해보았다.
에?? 그런데 '--headless' 옵션을 빼니까 잘 된다❔❔
뭔가 이상해서 이 내용을 중심으로 구글링해보니 webdriver의 ChromeOptions()에서
'user-agent' 값을 넣어준게 있었는데 여기서 'Chrome/89.x.x.x' 가 문제가 되는거 같았다.
Chrome 버전을 맞추지 않아서 발생한듯? 그런데 이전에도 버전 업데이트하고 진행할 땐, 잘 됬는데..왜????
그래서 해당 부분을 현재 webdriver 버전으로 수정한 후, 다시 실행하니
제대로 실행되는 것을 확인할 수 있었다.
def chrome_options():
chrome_option = webdriver.ChromeOptions()
chrome_option.add_argument('--headless')
chrome_option.add_argument('--no-sandbox')
chrome_option.add_argument('--disable-dev-shm-usage')
chrome_option.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.5304.107 Safari/537.36")
return chrome_option
'해외 주식 분석 프로젝트 > 크롤링' 카테고리의 다른 글
3. 해외 주식 지표 데이터 크롤링 [완] (0) | 2022.12.06 |
---|---|
2. 실시간 주가 크롤링 계획 내용 일부 변경 (0) | 2022.11.23 |
[Selenium] 레이아웃 내용의 일부분만 크롤링되는 현상 (0) | 2022.11.22 |
1. 해외 주식 정보 크롤링 작업 계획 (0) | 2022.11.18 |