다음 포털에서 [ 파이썬 ]을 검색 한 후 [ 블로그 ]를 살펴보면
아래 그림과 같이 32개의 페이지가 있는 것을 확인할 수 있습니다.
검색어를 [ 블로그 ]로 바꾸면 15개의 페이지가 있는 것을 확인할 수 있습니다.
이처럼 검색어를 바꿀 때마다 페이지의 숫자가 달라지기 때문에
몇번을 반복할 지 특정하기 어렵습니다.
앞선 포스팅에서 파이썬의 블로그 검색결과에 대한 정보는
[ list_info ty_doc ]라는 이름을 가진 클래스 안에 포함되어 있는 것을 확인했었습니다.
페이지 수를 하나하나 늘려가다가
[ list_info ty_doc ]라는 이름을 가진 클래스가 없다면 프로그램을 종료하게
만들면 될 것 같습니다.
url = "https://search.daum.net/search?nil_suggest=btn&w=fusion&DA=PGD&q=%ED%8C%8C%EC%9D%B4%EC%8D%AC&p=33"
service = Service(ChromeDriverManager().install())
driver = webdriver.Chrome(service=service)
driver.get(url)
time.sleep(3)
main_datas = driver.find_element(By.CLASS_NAME, "list_info.ty_doc")
[ 파이썬 ]으로 검색 한 후 33페이지를 강제로 불러와 해당 클래스가 있는 지
확인해 보면 에러 메세지가 출력됩니다.
정보가 없는 페이지를 불러오면 에러 메세지가 출력된 다는 것을 확인했습니다.
이제 코드를 작성해 보겠습니다.
앞서 작성한
파이썬 다음 블로그 크롤링(Python Selenium)(1)
파이썬 다음 블로그 크롤링(Python Selenium)(2)
두 포스팅을 읽고 오시면 도움이 되실 겁니다.
전체 소스 코드입니다.
앞서 보았듯이 요소를 찾지 못하면
NoSuchElementException 에러가 발생합니다.
에러 처리를 위해 위 그림처럼 import 해줍니다.
먼저 페이지를 구분하기 위해 변수를 선언하고 첫번째 페이지를 의미하는
값인 [ 1 ]을 넣어줍니다.
계속 반복을 해줄 겁니다.
요소를 찾지 못하여 에러가 발생할 때까지....
f-string을 사용해 url을 while 문이 반복될 때마다 페이지를 바꾸어 줍니다.
요소를 찾아줍니다.
만약 요소를 찾지 못하여 에러가 발생하면
브라우저를 닫고 while 문을 빠져나갑니다.
그 외 코드는 동일합니다.
다만, 마지막에 count 변수의 값을 하나씩 증가시킵니다.
while 문이 한번 돌때마다 count 값을 증가시켜
다음페이지로 넘어가게 만들어줍니다.
모든 검색 결과를 위와 같이 출력하며
요소를 찾지 못하면 프로그램을 종료합니다.
여기를 방문하시면 더 많은 파이썬 관련 자료를 확인할 수 있습니다.
'파이썬(Python)' 카테고리의 다른 글
[ Tkinter ] 파이썬 Tkinter 버튼 만들기(Python Tkinter Button), 그리드(grid) (0) | 2022.12.06 |
---|---|
[ 크롤링-Selenium ] 파이썬 다음 블로그 크롤링(Python Selenium)(4)-엑셀 저장 (0) | 2022.11.24 |
[ 크롤링-Selenium ] 파이썬 다음 블로그 크롤링(Python Selenium)(2) (0) | 2022.11.23 |
[ 크롤링-Selenium ] Python Selenium 요소 찾기(Locating Elements) (0) | 2022.11.22 |
[ 크롤링-Selenium ] 파이썬 다음 블로그 크롤링(Python Selenium)(1) (0) | 2022.11.21 |