파이썬 크롤링 방식 중 무엇을 써야 할까요?

조회수 2319회

안녕하세요. 저는 주로 PHP로 웹개발을 하고 있습니다. 현재 필요한 기능이 쇼핑몰의 판매자페이지에서 주문/문의/클레임 관련하여 수집하거나 송장번호를 전송하여 각 쇼핑몰에 일괄적으로 업데이트 시켜주는 크롤링 프로그램을 개발하려 합니다.

현재 selenium과 크롬 웹드라이버, 파폭을 사용하여 구현해 보았으나, 여러가지 문제점이 생겨 다른 방식을 찾는것이 나을듯 하여 질문을남깁니다.

우선 가장 힘든부분이 주문데이터 수집입니다. 보여지는 내용에서 긁어 파싱하는건 어렵지 않았습니다. (selenium 이던 bs 든..) 하지만 보여지는 내용은 극히 일부이고, 더 필요한 정보를 보려면 보통 주문번호를 클릭한다던지 해서 동적으로 생성되는 (Ajax) 내용을 파싱하여 나머지 정보를 가져와야 했습니다. 하지만 이 방식은 너무 느립니다. 매번 주문번호를 하나씩 클릭해줘야 하기 때문에..

selenium으로 브라우저를 제어하는건 사용자가 도중 중지가 안되고, 또 사이트에 어떠한 변수(레이어 팝업이 뜬다던지.. 로그인 후 비밀번호 변경을 하라고 하던지 등..)가 발생되면 오류를 띄웁니다.

bs로는 파일 다운로드가 어려웠습니다. 보통 쇼핑몰 관리자에서 엑셀로 데이터를 다운로드 하려하면, 동적으로 엑셀파일을 만들어 다운로드되게 되는데, 이게 PHP로 보통 구현하면 header를 정의하여 브라우저가 자동으로 다운로드를 하게끔 보통 만들자나요? 아마도 모두 그런식으로 처리되는것으로 보입니다.

selenium 은 엑셀 다운로드가 가능하지만, 브라우저 자체를 제어하는 형태라 전체적으로 속도가 느립니다. 또한 사이트에 발생하는 코드로 구현해두지 않은 부분이 나타나면 어김없이 오류를 출력합니다.

bs는 동적으로 생성되는 파일을 다운로드 할수가 없었습니다. 쿠팡의 경우 생성되는 주문 엑셀 파일의 경로가 매번 다릅니다. 이 경로를 파헤치는것도 저에겐 너무 힘들어서 도중 포기 했습니다 ㅠ.ㅠ

남은건 scrapy 인데 이것도 bs와는 크게 다르지 않아 보입니다. 보통 어떻게 구현해야 하나요?

도움 좀 부탁드립니다. ㅠ.ㅠ 파이썬을 발로 배우고 있습니다.

이것을 어떻게든 개발해내야 먹고 살길이 열립니다. 부탁드립니다. 간절 합니다. (__)

  • (•́ ✖ •̀)
    알 수 없는 사용자
  • 해당 쇼핑몰의 페이지가 변경되면 대처할 방법은 있으신가요? 변경되는 즉시 서비스 불가가 되는 것 아닌가요? 과연 렌더링된 결과를 파싱하는 것이 나은 방법일지...당연히 베스트 방법은 엽토군님의 답변처럼 공식 API를 이용하거나 해당 사이트와 계약을 해서 제공받는 것입니다. 정영훈 2018.9.14 23:46
  • 페이지가 변경되었을땐 그때 또 맞춰 작업을 해주는수밖엔 없겠지요. 작업자가 저 자신이니.. 그문제는 이미 예상하고 있는 문제 입니다. 대형 쇼핑몰이 아니고서는 API를 제공받을 방법 조차 없거든요.. 없다고 하니까.. 그런거.. 알 수 없는 사용자 2018.9.15 18:46
  • 은탄환 같은 방법은 없습니다. 계약등을 통해서 한번에 제공받는 방법이 없다면 ajax등 서버측에서 그런식(매 건당 클릭등)으로 서비스 하는 이상 따라가는 수 밖에는 없는 겁니다. 정영훈 2018.9.16 01:12

1 답변

  • "쿠팡 주문 엑셀 파일"은 쿠팡 공식 API를 가지고 만들어낼 수 있을 거 같은데요? 옥션, 11번가도 공식 API가 있으니 가급적 이쪽들을 고려해 보심이 어떤가 합니다. 제가 알기로 크롤링은 항상 마지막의 최악의 선택이어야 합니다. 마치 PHP의 몇몇 문제에서 exec()이 최후의 선택이 되듯이 말이죠.

    • 답변 정말 감사드립니다. 예를들면 쿠팡이라는것이고, 대부분은 API를 제공해주지 않고 있습니다. 크롤링할 사이트가 200여군데는 넘거든요.. 하지만 대부분 엑셀 파일 다운로드 방식이 php 헤더를 사용하는 방식이라.. 쿠팡을 예로들었을때 경로를 알기 어려워서 selenium 말고는 크롤링할 방법이 없는것인지를 알고 싶은것입니다. API쓰면 매우 편하지만.. 대형 쇼핑몰 중에도 이 API를 제공해주지 않는곳도 더러 있고, 또한 대형쇼핑몰이라 할지라도 별도의 제휴를 해야만 가능하다던가.. 여러가지 문제가 많이 있었습니다. 그렇다면 크롤링은 더이상 방법이 없는것인지요.. 알 수 없는 사용자 2018.9.15 18:42
    • 말씀하시는 방식이라면 selenium으로 브라우저 환경을 흉내내서 가져오는 게 최선일 것 같네요. 엽토군 2018.9.16 02:46

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)