본문 바로가기
Project

[마켓센싱] '뉴스 클릭 > 본문 스크래핑' 반복 시, 에러 잡기

by aimaimee 2023. 5. 15.

230513

페이지 내 뉴스 기사(20개) 클릭 > 스크래핑 시 for문 에러

1. for z in range(5, 25)

  • 뉴스 기사를 클릭하는 CSS_SELECTOR 경로는 'body > div.container > div:nth-child(5) > div > div.news-item-content > h3 > a'
  • nth-child(5) 부터 20개의 기사를 클릭해야 함.
  • for z in range(5, 25) 를 했어야 하는데, (5,26)으로 설정해서 에러가 나고 다음 페이지 클릭이 안되었던 것

2. f'body > div.container > div:nth-child({z}) > div > div.news-item-content > h3 > a'

  • {z}라는 변수를 반복해서 변경할 것이기 때문에 f-string 설정을 해주었어야 함

3. 다음 페이지로 넘어가기

  • 1페이지에서 2페이지로 넘어가는 XPATH 경로는 '/html/body/div[1]/div[23]/a'
  • 2페이지 이후부터는 다음 페이지로 넘어가는 경로는 '/html/body/div[1]/div[23]/a[2]'
  • CSS_SELECTOR로 해도 1페이지에서 2페이지는 a, 2페이지 이후는 a.next이다.
  • f-string으로 변경되는 부분을 {a_tag}로 설정, 1페이지인 경우 a를, 이후는 a[2]로 설정
  • ❓❓ a[2] 에서 숫자가 하나씩 늘어나게 해주어야 하는거 아닌가..? 💡 2페이지 이후는 전부 경로가 a[2]

4. 다음 페이지로 넘어가기 (2)

  • 다음 페이지 클릭 버튼은 상단의 'pagination'과 하단의 'pagination bottom'이란 class 이름 내에 a 태그로 속해있다.
  • 클릭이 제대로 설정이 안된다면, 다음과 같이 버튼이 있는 범위를 설정 > 그 안의 페이지 버튼을 클릭할 수 있도록 설정할 수 있다.
  • CLASS_NAME, LINK_TEXT, XPATH 등 다양한 방법이 있음
pageclick = driver.find_element(By.CLASS_NAME, 'pagination bottom')
pageclick.find_element(By.CLASS_NAME, 'next').click()

댓글