본문 바로가기
DataScience/Crawling & Scraping

와디즈 url, 상품 코드 가져오기

by mkk4726 2022. 4. 8.

Crawling.ipynb
0.04MB

와디즈(wadiz)라는 보상형 크라우드 플랫폼을 대상으로 프로젝트를 진행 중이다.

그림1. 와디즈(wadiz) 홈페이지

상품들의 정보를 불러오기 위해서는 상품들의 코드를 알거나 url을 알면된다.

이를 통해 html을 받아와 원하는 정보를 추출해낼 수 있다.

url과 상품코드를 가져오는 코드를 작성해 총 940개의 url, 코드를 수집했다.

생각보다 꽤 까다로운 과정이었다.

 

그림2. 상품 목록

그림2에서 보이는 것처럼 상품들이 나열되어있고 이를 하나씩 클릭한 후 url정보를 가져와야한다.

그림3. 상품 페이지

해당 페이지의 url은 https://www.wadiz.kr/web/campaign/detail/94198?_refer_section_st=REWARD_1이다. 

여기서 94198이 이 상품의 코드다. 이러한 메타정보들을 위의 과정을 반복하며 수집해줘야한다.

 

방법에서 알 수 있 듯 동적으로 크롤링을 해줘야한다. 그래서 Selenium을 이용해 메타정보를 수집해줬다.

Selenium에 대한 자세한 설명은 생략하고 어떠한 방법으로 수집을 했는지 설명하겠다.

코드1. Selenium 설치 및 option설정

colab에서 진행했다. 크롤링을 할 때는 늘 colab에서 하는 편인데, 런타임 초기화를 할 때 모든 정보가 날라가서 마음편히 다운받을 수 있기 때문이다. 즉 초기화가 쉽게 되기에 실수를 하거나 sever에게 차단당했을 때도 다시 시도할 수 있다는 장점이 있어 colab을 자주 사용하는 편이다.

 

코드1은 colab에 Selenium을 설치하고 colab에 맞게 설정을 해주는 과정이다. 여기저기 검색하면서 따온 코드로 그냥 실행시켜줬다. 코드를 많이 짜볼수록 느끼는 건데, 코드르 잘 짠다는 건 결국 다른 사람의 코드를 잘 사용하는게 아닐까 싶다. 

코드2. 메타정보 수집

코드2는 메타정보를 따온 코드 전부다. 총 5000개를 따오려고 시도했는데 최대 940개가 존재해 도중에 멈춰줬다.

정보 수집과정은 앞서 언급했듯 상품이 나열된 페이지(그림2)에서 상품페이지(그림3)으로 접속 후, 해당 페이지의 url을 따온다. 그 후 다시 그림2로 돌아가 과정을 반복한다. 이게 전부다. 

코드3. 스크롤을 내리는 함수

중간에 보이는 doScrollDown(second)는  스크롤을 밑으로 내려 상품을 더 보이게 만드는 것이다.

for 문 안의 try, except문을 보면 오류가 발생할 경우 second를 1씩 증가시켜주게 만들었다. 

클릭하는 부분인 이미지는 순서대로 짜여있다. target=driver.find~~부분을 보면 f string을 이용해 xpath안의 div{i}값만 바꿔주었다. 

i값을 증가시키면서 이미지를 클릭하다가 더 이상 안보이면 스크롤하는 시간을 늘려 더 밑에까지 스크롤 한 후에 이미지를 클릭하게 만든 것이다. 

코드4. 최종결과

코드 4를 보면 메타 데이터의 모습을 볼 수 있다. 이를 이용해 페이지의 정보들을 쭉 추출해주기만 하면 된다. 

 


어떤 것을 이해했나? 라는 질문에 Yes라고 답하기 위해서는 2가지 근거가 필요한 것 같다.

1. 남에게 설명할 수 있어야한다. 2. 별거 아닌 것 처럼 느껴져야한다.

 

크롤링을 처음 접했을 때는 되게 어렵게 느껴졌던 것 같은데, 이런 저런 프로젝트를 진행하면서 어느 순간 별거 아닌 것처럼 느껴지기 시작했다. 

 

그리고 이 과정을 다른 사람에게 설명한다는 생각으로 블로그에 글을 쓴다.

 

2가지 근거를 갖췄으니 이해했다고 생각할 수 있을 것 같다.

댓글