혹은
https://smartstore.naver.com/mo-da/products/7926431875
이런식의 스마트스토어 페이지에서
위 주소형태로 아래 최대 적립포인트 부분만 파싱해서 가져오는 방법이 있나요?
소스코드를 확인해보니
<span class="bd_AoQmU">1,453</span>
class 값으로 추출이 가능할거같긴한데.. 어떤식으로 가져와야할지 모르겠습니다.
예를들면 
|
답변 4개 / 댓글 2개
채택된 답변
+20 포인트
스트어뿐만 아니라 맛집 등을 php로 크롤링하는 것은 불가능합니다
파이썬을 이용하면 가능 할 것입니다
Copy
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;
}
이런형태로 가져올 수있을거같은데 문법이나 구성이 잘못되었는지요?
답변에 대한 댓글 1개
*find("bd_AoQmU") 부분은
태그 이름이나 ID가 아니라 클래스 이름이라면 앞에 점(.)을 붙여야 합니다.
예로, 해당 요소가 클래스명이라면 find(".bd_AoQmU")로 수정해야 올바르게 선택 됨.
*네트워크 요청이나 HTML 로딩 과정에서 오류가 발생할 가능성이 있으므로,
예외 처리를 추가하는 것이 좋음.
*네이버와 같이 보안이 강화된 사이트의 경우,
단순 cURL 요청으로 데이터를 가져오더라도 로봇 차단이나 HTML 구조 변경으로 인해
정상적으로 동작하지 않을 수 있음.
태그 이름이나 ID가 아니라 클래스 이름이라면 앞에 점(.)을 붙여야 합니다.
예로, 해당 요소가 클래스명이라면 find(".bd_AoQmU")로 수정해야 올바르게 선택 됨.
*네트워크 요청이나 HTML 로딩 과정에서 오류가 발생할 가능성이 있으므로,
예외 처리를 추가하는 것이 좋음.
*네이버와 같이 보안이 강화된 사이트의 경우,
단순 cURL 요청으로 데이터를 가져오더라도 로봇 차단이나 HTML 구조 변경으로 인해
정상적으로 동작하지 않을 수 있음.
답변을 작성하려면 로그인이 필요합니다.