질문/조언질답게시판

로또 1등 당첨 판매점 화면을 파싱해서 사용하려고 합니다.

https://dhlottery.co.kr/store.do?method=topStore&pageGubun=L645

 

위 페이지 입니다.

 

 

 

foreach($html->find('table[class=tbl_data tbl_data_col]',0)->find('td') as $element){
    echo $element->innertext . '<br>';
}

 

일단 이렇게 출력을 해봤는데요.

 

1
인터넷 복권판매사이트
자동
동행복권(dhlottery.co.kr)
지도보기

2
진우복권
자동
부산 연제구 월드컵대로 119 204호(연산동)
지도보기

 

 

 

마지막 "지도보기" 는 사실 버려질 것입니다.

 

1,인테넷 복권판매 사이트,자동,동행복권

 

4개의 아이템을 각각의 변수에 담아서 사용하고 싶습니다. 

일단 각각 다른 이름의 변수에 배열식으로 담기게 하고 싶습니다. 

 

이후에 해당 변수를 출력하려구요.

 

$number, $address, $type, $store_name 

위 각각 자신의 변수에 들어가게 해서 사용하게 순서대로 순환이되면서 담기게 하고 싶습니다.

 

버려질 것도 일단 담아 놓는 것이 편하다면 

$number, $address, $type, $store_name , $loc  이렇게 사용해도 될 것 같습니다.

 

 

 

  • profile
    모바일이라서 자세한 코드를 말씀드리기는 힘든데...

    각 매장별로 데이터를 나눠 담으셔야 할 것 같으니..
    td 를 찾아 루프를 바로 돌리지 마시고,
    tr 을 찾아 루프를 돌린 뒤, 각 tr 마다 td 를 찾으셔서, 변수에 담으셔요.

    $data = [];
    foreach($html->find('table~~')->find('tr') as $tr){
    $tds = $tr->find('td');
    $data[] = [
    'number' => $tds[0]->innertext,
    'store_name' => $tds[1]->innertext,
    ~~~~~~~
    ];
    }

    해서 $data 안에 매장 순서대로 들어가구요.
    $data[0]['store_name'] 은 첫번째 매장의 이름인걸로.
  • profile profile
    답변 감사합니다. 지금 아이템을 그냥 반복해서 수작업으로 여러개를 만들까 하다가 답변 주셔서 답변 주신거로 시도해 보겠습니다.
  • profile profile
    감사합니다. 말씀해주신 코드로 잘 되는 거 같습니다.
    $data[1]['store_name'] 이렇게 해야 첫번째게 나오네요. 어찌되었던 나오니 ㅋㅋ

    어려운 관문은 통과한 것 같습니다.
    도움 정말 감사합니다.

    이제 이 데이터를 출력을 잘 해주고...

    다음 과정은 주소로 카카오 지도를 띄우는 거 시도 해보겠습니다.
  • profile profile

    php 에서 직접 작성하려니 처음 해보는거라 잘 안되네요.

    <?php
    foreach($data as $key => $val) {
    ?>
    <tr>
    <td ><span><?php echo $val[$key]->number; ?></span></td>
    <td ><span><?php echo $val[$key]->store_name; ?></span></td>
    <td><span><?php echo $val[$key]->type; ?></span></td>
    <td><span><?php echo $val[$key]->adress; ?></span></td>
    <td><span></span></td>
    </tr>
    <?php
    }
    ?>


    제가 뭘 잘못하고 있는거죠???

  • profile profile

    $val[$key] 말고 $val 로 사용하시구요. ($val 은 $data[$key], $val[$key] 는 $data[$key][$key])
    ->number 말고 ['number'] 으로 사용해 보세요. (위에서 배열 형식으로 저장하였으니, ['number']. ->number 은 오브젝트(stdClass) 형식.)

    $val['number'] 처럼요.

  • profile profile

    늦은 시간 너무 감사합니다. 처음 하는거라 무턱대고 시도하니 당연히 엉뚱하게 하고 있네요.

     

    다운로드.jpg

     

    완전하게 마무리 되었습니다!!!

     

    지도는 다음 시간에 해보겠습니다.