inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

쉽게 처음하는 파이썬 고급 크롤링 [Scrapy, Selenium, Headless Chrome]

Selenium 기본 사용법1 - name 으로 찾기

셀레니움 문법 업그레이드 , find_element_by_tag_name 오류

2832

가후

작성한 질문수 90

3

공유하려고 글씁니다.

(질문에 남겨야지, 이 강의 수강하시는분들이 볼수있기때문에, 질문에 글 남깁니다.)

 

방금 공부하는도중에 아무리봐도 오타가 없는데

find_element_by_tag_name('h1') 이 안되네요

 

구글링해서 찾아보니

셀레니움 문법이 업그레이드 되었다고합니다.

몇시간을 헤맨건지..

참고로 이렇게 쓰면 됩니다

elem = driver.find_element(By.TAG_NAME, "h1")

 

find_element_by_tag_name => find_element

위와 같이 문법 변경 되었습니다.

 

데이브리 선생님께 항상 감사드립니다.

 

selenium 웹-크롤링 bigdata scrapy

답변 1

2

잔재미코딩 DaveLee

안녕하세요. 우선 공유해주셔서 감사합니다. 

또 ㅎㅎ 좋은 분 뵌듯해서 저도 정말 반갑습니다. 저도 사실 이 이슈를 오늘 알게 되었습니다. 급히 전체 코드포함 자료를 수정하였고, 지금에서야 공지를 드렸습니다. 아무쪼록 강의를 진행하시는데 큰 무리가 없으셨으면 좋겠습니다.

-------------------

 

안녕하세요. 잔재미코딩 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