스마트 스토어 일부항목 파싱 가능한가요? 채택완료
혹은
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개
공식 API를 활용하는 것인데 만약 없다면,
헤드리스 브라우저로 동적 파싱을 시도할 수는 있으나 변경 가능성과 차단 위험이 있으므로
정책 준수 여부와 유지 보수 전략을 가미한 최적의 접근 방식을 찾으셔야 합니다.
댓글을 작성하려면 로그인이 필요합니다.
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
</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개
태그 이름이나 ID가 아니라 클래스 이름이라면 앞에 점(.)을 붙여야 합니다.
예로, 해당 요소가 클래스명이라면 find(".bd_AoQmU")로 수정해야 올바르게 선택 됨.
*네트워크 요청이나 HTML 로딩 과정에서 오류가 발생할 가능성이 있으므로,
예외 처리를 추가하는 것이 좋음.
*네이버와 같이 보안이 강화된 사이트의 경우,
단순 cURL 요청으로 데이터를 가져오더라도 로봇 차단이나 HTML 구조 변경으로 인해
정상적으로 동작하지 않을 수 있음.
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인