테스트 사이트 - 개발 중인 베타 버전입니다

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

수난이대 8개월 전 조회 1,549

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 값으로 추출이 가능할거같긴한데..  어떤식으로 가져와야할지 모르겠습니다.

 

예를들면 http://sir.kr/data/editor/2503/3731829775_1741236002.9096.png" />

댓글을 작성하려면 로그인이 필요합니다.

답변 4개

채택된 답변
+20 포인트
glitter0gim
8개월 전

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

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

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

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

8개월 전

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

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

 

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

수난이대
8개월 전
답변 감사합니다. php로는 안되는군요.

댓글을 작성하려면 로그인이 필요합니다.

8개월 전

</p>

<p>ini_set("allow_url_fopen","1");

include('./simple_html_dom.php');</p>

<p>    $url = "<a href="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";" target="_blank" rel="noopener noreferrer">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";</a>

  </p>

<p>    $str = file_get_contents_curl($url);

    $html = new simple_html_dom();

    $html->load($str);

    foreach($html->find("bd_AoQmU") as $data){

            echo $data;

            echo '
';

    }</p>

<p>

    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;

    }</p>

<p>

 

 

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

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

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

댓글을 작성하려면 로그인이 필요합니다.

8개월 전

가지고 온다고 해도 금방 막힐겁니다. 네이버 파싱은 안하시는게 좋습니다.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

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

로그인