xetown에서 snoopy관련글을 보다 한번 시도를 해보고 싶어 질문글 올립니다.

 

아래 페이지 주소에서 2가지 값을 추출 하는 정규식(?)을 어떻게 작성해야 하는지 혹시 도움 좀 받을 수 있을까요?

 

1. 해당 페이지 : http://www.lottesuper.co.kr/handler/cc/Store-Detail?strNo=110684

2. 페이지에서  "가락점" " 인터넷전단보기"에 링크 url 주소를

    가락점  http://image.lottesuper.co.kr/static-root/fileupload/ebook/20171205/17_12_02_all_a.pdf 이런 형태로 추출하고 싶습니다.

 

 

1.PNG

2.PNG

 

 

  • profile
    snoopy는 웹페이지을 다운받는(?) 라이브러리입니다.

    다운받은 데이터 처리는 정규표현식을 사용하여 긁어옵니다.

    추가로 pdf 파일 가져오는 방법은 현재 자바스크립트로 다운로드를 처리하고 있습니다.
    http://www.lottesuper.co.kr//handler/common/Common-Ebook?_X2_IDENTIFIER_KEY_=_JSON_MESSAGE_&str_no=상점정보 넘버 로 json 받아오시면 pdf링크를 받아 올수있습니다.
  • profile ?

    답변 감사합니다.

    예시들을 찾아보고 아래와 같이 생각을 해봤는데 쉬운게 아니었군요. ^^;

     

    우선 하나의 상점번호에서 상점명과 링크 url 추출한 후 성공하면 전체 상점번호를 넣어 전체 상점에서 원하는 값 ( 상점명과 링크 url ) 추출 하려고 생각했었거든요. 

     

    <!doctype html>
    <html lang="en">
     <head>
      <meta charset="UTF-8">
      <meta name="Generator" content="EditPlus®">
      <meta name="Author" content="">
      <meta name="Keywords" content="">
      <meta name="Description" content="">
      <title>Document</title>
     </head>
     <body>
      <?php
     
    $x=array("110684","상점번호","상점번호"
    );
    foreach ($x as $value)
    {
    //변수 초기화
    unset($data);
    include_once 'Snoopy.class.php';
    $snoopy=new snoopy;
    $snoopy->fetch('http://www.lottesuper.co.kr/handler/cc/Store-Detail?strNo='.$value); 
    $result = $snoopy->results; 
    ); 
    
    //상점명 추출????
    
    //인터넷 전단 url 링크 추출???
    
    //상점명 
    echo $data['item'][1][1]. "--" ; 
    //전단지 URL 출력
    echo $data['link']."<br />";
    }
      ?>
     </body>
    </html>
    
     

     

    출렬결과 :

    상점명1 -- 전단지 링크 url

    상점명2 -- 전단지 링크 url

    상점명3 -- 전단지 링크 url

    ......

     

  • ? profile
    헛 마트몬님 간만에 뵈요~ 화이팅요!
  • ? profile

    $rex="/\<h2 class=\"tit\"\>(.*)\<\/h2\>/";
    preg_match_all($rex,$result,$data);

    print_r($data);

     

    // 테스트 해보진 않았습니다.
    해보시면 제목은 긁어올수있습니다.

  • profile
    pdf 힌트를 드리면 $url= "http://www.lottesuper.co.kr//handler/common/Common-Ebook?_X2_IDENTIFIER_KEY_=_JSON_MESSAGE_&str_no=110684";
    $ch = curl_init();

    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    curl_setopt($ch, CURLOPT_URL,$url);

    $result=curl_exec($ch);

    curl_close($ch);

    var_dump(json_decode($result))
  • profile ?
    넵 감사합니다 ^^
  • profile ?
    감사합니다. 다시 한번 시도 해보겠습니다.
  • profile ?
    <html lang="en">
     <head>
      <meta charset="UTF-8">
      <meta name="Generator" content="EditPlus®">
      <meta name="Author" content="">
      <meta name="Keywords" content="">
      <meta name="Description" content="">
      <title>Document</title>
     </head>
     <body>
      <?php
      $x=array("110684","110980");
    foreach ($x as $value)
    {
    //변수 초기화
    unset($data);
    include_once 'Snoopy.class.php';
    $snoopy=new snoopy;
    $snoopy->fetch('http://www.lottesuper.co.kr/handler/cc/Store-Detail?strNo='.$value); 
    $result = $snoopy->results; 
    $rex="/\<h2 class=\"tit\"\>(.*)\<\/h2\>/";
    preg_match_all($rex,$result,$data);
    print_r($data);
    }
      ?>
     </body>
    </html>

     

    첫번째 알려주신 부분은 상점번호 2개를 넣고 테스트 해봤는데 아래와 같이 상점명을 잘 가져 오고 있습니다.

    2번째 pdf 부분은 여러 방법으로 게속 시도를 해보고 있지만 코알못이라 어떻게 적용을 해야 할지 전혀 감을 못잡겠는데요 죄송하지만 조금만 더 도움을 주시면 감사하겠습니다. ^^;;

    ----------------------------------------------------------------------------------------

    [ 상점명 출력만 적용 한 결과 ]

    Array ( [0] => Array ( [0] =>

    가락점

    ) [1] => Array ( [0] => 가락점 ) ) Array ( [0] => Array ( [0] =>

    갈월점

    ) [1] => Array ( [0] => 갈월점 ) )

     

    -----------------------------------------------------------------------

    [ 희망 출력 결과 ]

    가락점 -- {"result":{"LAST_LFL_ISSU_DT":"2017.12.06","LFL_URL_ADDR":"http://image.lottesuper.co.kr/static-root/fileupload/ebook/20171205/17_12_02_all_a.pdf"}}

    갈월점 -- {"result....... }}

    상점명3  -- {"result....... }}

    ....

  • ? profile
    기존 파싱과 별개로 아까 드린 코드로 넣으셔서 불러오셔야죠
  • profile ?

    감사합니다. 2번째 pdf 부분도 어떻게 짜깁기를 하다보니 제대로 출력됩니다.


    첫번째 상점명 출력하는 부분에서 마지막 한가지만 더 문의 드리겠습니다.


     <?php
      $x=array("110684","110980");
    foreach ($x as $value)
    {
    //변수 초기화
    unset($data);
    include_once 'Snoopy.class.php';
    $snoopy=new snoopy;
    $snoopy->fetch('http://www.lottesuper.co.kr/handler/cc/Store-Detail?strNo='.$value); 
    $result = $snoopy->results; 
    $rex="/\<h2 class=\"tit\"\>(.*)\<\/h2\>/";
    preg_match_all($rex,$result,$data);
    print_r($data);
    }
      ?>
    를 적용하면 
    Array ( [0] => Array ( [0] =>
    가락점

    ) [1] => Array ( [0] => 가락점 ) ) Array ( [0] => Array ( [0] =>
    갈월점

    ) [1] => Array ( [0] => 갈월점 ) )

    출력이 되는데 Array ~~~~ 이렇게 출력되는 부분을 없애려면 어떻게 해야 할지 부탁드리겠습니다.

  • ? profile
    print_r로 되있어서 그렇습니다.
    $data[0][0]; 으로 받아오심 될듯 합니다.
  • profile ?
    감사합니다. 도와주신 덕분에 문제가 모두 해결되었습니다. ^^