와디즈(wadiz)라는 보상형 크라우드 플랫폼을 대상으로 프로젝트를 진행 중이다.
상품들의 정보를 불러오기 위해서는 상품들의 코드를 알거나 url을 알면된다.
이를 통해 html을 받아와 원하는 정보를 추출해낼 수 있다.
url과 상품코드를 가져오는 코드를 작성해 총 940개의 url, 코드를 수집했다.
생각보다 꽤 까다로운 과정이었다.
그림2에서 보이는 것처럼 상품들이 나열되어있고 이를 하나씩 클릭한 후 url정보를 가져와야한다.
해당 페이지의 url은 https://www.wadiz.kr/web/campaign/detail/94198?_refer_section_st=REWARD_1이다.
여기서 94198이 이 상품의 코드다. 이러한 메타정보들을 위의 과정을 반복하며 수집해줘야한다.
방법에서 알 수 있 듯 동적으로 크롤링을 해줘야한다. 그래서 Selenium을 이용해 메타정보를 수집해줬다.
Selenium에 대한 자세한 설명은 생략하고 어떠한 방법으로 수집을 했는지 설명하겠다.
colab에서 진행했다. 크롤링을 할 때는 늘 colab에서 하는 편인데, 런타임 초기화를 할 때 모든 정보가 날라가서 마음편히 다운받을 수 있기 때문이다. 즉 초기화가 쉽게 되기에 실수를 하거나 sever에게 차단당했을 때도 다시 시도할 수 있다는 장점이 있어 colab을 자주 사용하는 편이다.
코드1은 colab에 Selenium을 설치하고 colab에 맞게 설정을 해주는 과정이다. 여기저기 검색하면서 따온 코드로 그냥 실행시켜줬다. 코드를 많이 짜볼수록 느끼는 건데, 코드르 잘 짠다는 건 결국 다른 사람의 코드를 잘 사용하는게 아닐까 싶다.
코드2는 메타정보를 따온 코드 전부다. 총 5000개를 따오려고 시도했는데 최대 940개가 존재해 도중에 멈춰줬다.
정보 수집과정은 앞서 언급했듯 상품이 나열된 페이지(그림2)에서 상품페이지(그림3)으로 접속 후, 해당 페이지의 url을 따온다. 그 후 다시 그림2로 돌아가 과정을 반복한다. 이게 전부다.
중간에 보이는 doScrollDown(second)는 스크롤을 밑으로 내려 상품을 더 보이게 만드는 것이다.
for 문 안의 try, except문을 보면 오류가 발생할 경우 second를 1씩 증가시켜주게 만들었다.
클릭하는 부분인 이미지는 순서대로 짜여있다. target=driver.find~~부분을 보면 f string을 이용해 xpath안의 div{i}값만 바꿔주었다.
i값을 증가시키면서 이미지를 클릭하다가 더 이상 안보이면 스크롤하는 시간을 늘려 더 밑에까지 스크롤 한 후에 이미지를 클릭하게 만든 것이다.
코드 4를 보면 메타 데이터의 모습을 볼 수 있다. 이를 이용해 페이지의 정보들을 쭉 추출해주기만 하면 된다.
어떤 것을 이해했나? 라는 질문에 Yes라고 답하기 위해서는 2가지 근거가 필요한 것 같다.
1. 남에게 설명할 수 있어야한다. 2. 별거 아닌 것 처럼 느껴져야한다.
크롤링을 처음 접했을 때는 되게 어렵게 느껴졌던 것 같은데, 이런 저런 프로젝트를 진행하면서 어느 순간 별거 아닌 것처럼 느껴지기 시작했다.
그리고 이 과정을 다른 사람에게 설명한다는 생각으로 블로그에 글을 쓴다.
2가지 근거를 갖췄으니 이해했다고 생각할 수 있을 것 같다.
'DataScience > Crawling & Scraping' 카테고리의 다른 글
더보기, LoadMore 눌러야 할 때 ( dynamic crawling ) (0) | 2023.07.04 |
---|---|
Scraping IMDb review data (0) | 2023.07.02 |
네이버 금융 web scraping (0) | 2022.04.19 |
데이터 뽑아내기_ YouTube (0) | 2022.04.12 |
와디즈 크롤링 - 필요한 정보 수집해오기 (0) | 2022.04.09 |
댓글