스마트 스토어 일부항목 파싱 가능한가요?

🙏SIR UI/UX 디자인 의뢰(~7/31)
스마트 스토어 일부항목 파싱 가능한가요?

QA

스마트 스토어 일부항목 파싱 가능한가요?

본문

https://smartstore.naver.com/mo-da/products/10503862272?n_media=684925&n_query=%EC%8A%A4%EB%A7%88%ED%8A%B8%EC%8A%A4%ED%86%A0%EC%96%B4%ED%94%BC%EC%8B%B1&n_rank=1&n_ad_group=grp-a001-02-000000046911322&n_ad=nad-a001-02-000000340500458&n_campaign_type=2&n_mall_id=ncp_1ogn7b_01&n_mall_pid=10503862272&n_ad_group_type=2&n_match=3&NaPm=ct%3Dm7wuvwh4%7Cci%3D0zS0002D9GzBFajqBLl2%7Ctr%3Dplan%7Chk%3Dac78d7f70881f33cf63dd005c08aa07eafeb853f%7Cnacn%3DIXw0BMwIiy9B

 

 

혹은 

 

https://smartstore.naver.com/mo-da/products/7926431875

 

이런식의 스마트스토어 페이지에서

 

위 주소형태로  아래  최대 적립포인트 부분만 파싱해서 가져오는 방법이 있나요?

 

소스코드를 확인해보니

<span class="bd_AoQmU">1,453</span>

class 값으로 추출이 가능할거같긴한데..  어떤식으로 가져와야할지 모르겠습니다.

 

예를들면 3731829775_1741236002.9096.png

이 질문에 댓글 쓰기 :

답변 4

공식 API를 활용하는 것인데 만약 없다면,

헤드리스 브라우저로 동적 파싱을 시도할 수는 있으나 변경 가능성과 차단 위험이 있으므로

정책 준수 여부와 유지 보수 전략을 가미한 최적의 접근 방식을 찾으셔야 합니다.


ini_set("allow_url_fopen","1");
include('./simple_html_dom.php');
    $url = "https://smartstore.naver.com/mo-da/products/10503862272?n_media=684925&n_query=%EC%8A%A4%EB%A7%88%ED%8A%B8%EC%8A%A4%ED%86%A0%EC%96%B4%ED%94%BC%EC%8B%B1&n_rank=1&n_ad_group=grp-a001-02-000000046911322&n_ad=nad-a001-02-000000340500458&n_campaign_type=2&n_mall_id=ncp_1ogn7b_01&n_mall_pid=10503862272&n_ad_group_type=2&n_match=3";
  
    $str = file_get_contents_curl($url);
    $html = new simple_html_dom();
    $html->load($str);
    foreach($html->find("bd_AoQmU") as $data){
            echo $data;
            echo '<br>';
    }

    function file_get_contents_curl($url){
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 웹 사이트가 https일 때 필요
        $data = curl_exec($ch);
        curl_close($ch);
        return $data;
    }

 

 

이런형태로 가져올 수있을거같은데 문법이나 구성이 잘못되었는지요?

 

*find("bd_AoQmU") 부분은
  태그 이름이나 ID가 아니라 클래스 이름이라면 앞에 점(.)을 붙여야 합니다.
  예로, 해당 요소가 클래스명이라면 find(".bd_AoQmU")로 수정해야 올바르게 선택 됨.
*네트워크 요청이나 HTML 로딩 과정에서 오류가 발생할 가능성이 있으므로,
  예외 처리를 추가하는 것이 좋음.
*네이버와 같이 보안이 강화된 사이트의 경우,
  단순 cURL 요청으로 데이터를 가져오더라도 로봇 차단이나 HTML 구조 변경으로 인해
  정상적으로 동작하지 않을 수 있음.

스트어뿐만 아니라 맛집 등을 php로 크롤링하는 것은 불가능합니다

파이썬을 이용하면 가능 할 것입니다

 

 

답변을 작성하시기 전에 로그인 해주세요.
전체 118
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT