셀레니움 문법 업그레이드 , find_element_by_tag_name 오류
2832
작성한 질문수 90
공유하려고 글씁니다.
(질문에 남겨야지, 이 강의 수강하시는분들이 볼수있기때문에, 질문에 글 남깁니다.)
방금 공부하는도중에 아무리봐도 오타가 없는데
find_element_by_tag_name('h1') 이 안되네요
구글링해서 찾아보니
셀레니움 문법이 업그레이드 되었다고합니다.
몇시간을 헤맨건지..
참고로 이렇게 쓰면 됩니다
elem = driver.find_element(By.TAG_NAME, "h1")
find_element_by_tag_name => find_element
위와 같이 문법 변경 되었습니다.
데이브리 선생님께 항상 감사드립니다.
답변 1
2
안녕하세요. 우선 공유해주셔서 감사합니다.
또 ㅎㅎ 좋은 분 뵌듯해서 저도 정말 반갑습니다. 저도 사실 이 이슈를 오늘 알게 되었습니다. 급히 전체 코드포함 자료를 수정하였고, 지금에서야 공지를 드렸습니다. 아무쪼록 강의를 진행하시는데 큰 무리가 없으셨으면 좋겠습니다.
-------------------
안녕하세요. 잔재미코딩 Dave Lee 입니다.
쉽게 처음하는 파이썬 고급 크롤링 강의가 업데이트되어 공유드립니다.
최근 selenium 라이브러리가 업데이트되면서, 메서드명을 변경하였습니다. 물론 메서드명을 변경하더라도, 기존 메서드는 동일하게 사용할 수 있도록 하는 것이 일반적입니다. '호환성' 때문인데요. 그런데, selenium 라이브러리 개발팀? 은 기존 메서드를 아예 지원을 하지 않도록 하였습니다. 이렇게 되면, 기존에 selenium 을 활용한 코드들은 selenium 라이브러리 버전에 따라, 동작 안하는 케이스가 발생할텐데, 큰 결정인 듯합니다.
이와 함께 코드에 영향을 미치지는 않지만, 변경하려는 코드가 보여서, 다음과 같이 두 가지 사항을 변경하였습니다.
1. find_element_by_***() 메서드를 모두 find_element(By.***, ***) 와 같은 형태로 변경되었습니다.
- 예: find_element_by_id('myid') --> find_element(By.ID, 'myid')
- By.ID 등을 선언하기 위해서는 다음 추가 선언도 필요합니다.
from selenium.webdriver.common.by import By
2. selenium 이 4.x.x 이상에서, 코드에 영향을 미치지는 않지만, 초기 설정 코드도 변경하려는 듯합니다.
- 기존에는 경로를 직접 인자로 넣어주면 되었지만 (예: webdriver.Chrome(chromedriver))
- 이후에는 Service 객체에 넣어주는 방향으로 변경될 듯 합니다. (예: webdriver.Chrome(service=Service(chromedriver))
- 이를 위해, webdriver_manager 라이브러리도 별도 설치가 필요합니다.
이상의 변경이 사실상, 메서드명이 변경된 것일 뿐이지만, 핵심 메서드명이 변경되어, 관련 코드 및 자료를 모두 업데이트하였습니다. 다음 챕터의 코드를 포함한 자료를 모두 업데이트하였으므로, 필요하실 때, 새로 다운받으시면 좋을 것 같습니다.
- Selenium 과 Scrapy 프레임워크 큰 그림과 목표 이해하기
- 연습문제로 풀어보기1 : Headless Chrome 과 Selenium 크롤링
- XPATH 큰 그림으로 이해하기
- 연습문제로 풀어보며 이해하는 XPATH 활용
- Selenium 을 활용한 멀티 페이지 크롤링
- Scrapy 다양한 사용법: Selenium 과 Scrapy 조합해서, 동적 웹페이지 크롤링하기
저도 오늘 급히 알게 되어, 급히 수정하였는데요. 아무쪼록 진행에 이슈는 없으셨으면 좋겠습니다.
감사합니다.
[REST API] data의 교환방식 질문
1
666
1
headless chrome 오류 문의
0
1488
1
Selenium 처리 속도 관련 문의드립니다.
0
1955
1
동적 웹사이트에서 element가 선택되지 않는 문제에 관해 질문드립니다
0
687
1
webdriver manager
0
440
1
__init__() got an unexpected keyword argument 'service' 에러 질문드립니다.
1
11713
1
Jupiter NoteBook 파일과 PDF 파일은 어디서 다운로드 받을 수 있나요?
0
444
1
scrapy option질문
1
244
1
response.css 질문드립니다.
0
372
1
scrapy 크롤링 수행시 ffi.callback() 에러가 발생합니다
0
397
1
selenium으로 여러페이지 수집시 질문
0
381
1
연습6 모범 코드: 로그인 시나리오 해보기
0
272
1
셀레니움 버전 변경으로 인한 코드 변경
0
1285
1
headless error
0
441
1
질문있습니다!
0
463
1
안녕하세요 선생님! 질문있습니다.
0
233
1
selenium&scrapy문의
0
280
1
아래분(phantele47)과 동일한 문제가 발생해서 문의드립니다.
0
910
6
ip 차단을 피하려면 어떻게 해야 하나요?
0
3370
2
start_urls = ['']가 제공해주신 것과 다르게 작동합니다.
1
287
2
json, data = json.loads(response.body_as_unicode()) 부분에 문제가 있는 것 같습니다.
0
604
3
웹크롤링이 상대방 서버에 부담이 될 때는 어떻게 하나요~?
0
685
1
scrapy 윈도우버전의 설명은 따로 없나요??
0
332
1
json 으로 저장이 안되네요
0
2133
1





