2017-11-06 12 views
0
<?php 
     include_once('simple_html_dom.php'); 

     $veri = file_get_html("http://apps.istanbulsaglik.gov.tr/Eczane"); 


     preg_match_all('@<a href="(.*?)" class="ilce-link" data-value="(.*?)" 
     data-ilcename="(.*?)" data-title="(.*?)" id="ilce" title="(.*?)"><i 
     class="fa fa-dot-circle-o"></i>(.*?)</a>@si',$veri,$baslik); 
     $length = count($baslik[4]); 

     for ($i = 0; $i < $length; $i++) { 
      echo $baslik[4][$i]; 
      echo "</br>"; 
     } 

     preg_match_all('@<table class="table ilce-nobet-detay" id="ilce-nobet-detay">(.*?)</table>@si',$veri,$adres); 

     echo $adres[1][1]; 
    ?> 

このリンクに含まれています。 http://apps.istanbulsaglik.gov.tr/Eczane「Eczaneler」の下に表示される右側の要素を取得できません。PHP Web Crawlerをクリックしてください。

左の要素のいずれかをクリックする必要があるので、それらを見ることができます。私がしたいことは、Webクローラの要素を取得することです。 主な問題は、クローラをクリックするにはどうすればいいですか?クリックするとデータが表示されません。 クリックすると、htmlソースからデータを取得できます。そうでない場合、クローラは常に空に戻ります。

答えて

2

あなたはhttp://apps.istanbulsaglik.gov.tr/Eczaneリンク上の任意のブラウザのインス​​ペクタを使用している場合、あなたはİlçeler列内の各リンクは、データ値を持っており、クリックイベントにバインドさがわかります。

ページJavascriptコード:

$(function() { 
    $(".ilce-link").on("click", function (parameters) { 
     var title = $(this).data("title").toUpperCase(); 
     var id = $(this).data("value"); 
     var request = $.ajax({ 
      url: "/Eczane/nobetci", 
      method: "POST", 
      data: { "id": id, "token": "aa416735d12fd44b" }, 
      dataType: "html" 
     }); 
     request.done(function (data) { 
      $("#nobet").empty(" "); 
      $("#nobet").html('<i class="fa fa-spinner fa-spin"></i>'); 
      $("#nobet").html(data); 
      document.title = "06-11-2017 TARİHİNDEKİ " + title + " İLEÇSİNDEKİ NÖBETÇİ ECZANE LİSTESİ"; 
     }); 
    }); 
}); 

このコードは、左の列のいずれかのリンクをクリックすると、AJAXによるこのURLへの投稿要求を作成することを意味します。http://apps.istanbulsaglik.gov.tr/Eczane/nobetci IDとトークン。

このURLとポストデータを直接使用することを考えれば、最初のページのjsコードからリンク要素とトークンからIDを取得し、CURL PHPを使用してこれらのデータを送信できます。

私はあなたの答えがあるから理解して何
$ch = curl_init(); 

curl_setopt($ch, CURLOPT_URL,"http://apps.istanbulsaglik.gov.tr/Eczane/nobetci"); 
curl_setopt($ch, CURLOPT_POST, 1); 
// you can use preg_match_all to retrieve the id and the token from the first page 
curl_setopt($ch, CURLOPT_POSTFIELDS, "id=$id&token=$token"); 

$output = curl_exec ($ch); 

curl_close ($ch); 
+0

、私はidとpreg_match_allとトークンを見つけるだろうと私は$ IDとトークン$にそれらを初期化します:

はここCURLポストを使用した例です。私はこの$出力変数が私に何を与えるのでしょうか? –

+0

私は、スクリプトで自動的に生成されるので、私はトークンは必要ないと思う。しかし、 "id"だけでCurl関数を呼び出すと、リンクを直接入力すると表示されるようにランタイムエラーが発生します。 http://apps.istanbulsaglik.gov.tr/Eczane/nobetci –

+0

2を作成する必要がありますCurlリクエスト、ページからトークンを取得する最初のもの[http://apps.istanbulsaglik.gov.tr/Eczane](http://apps.istanbulsaglik.gov.tr/Eczane)と投稿を作成する2番目の最初のページから既に取得したトークンを使用して[http://apps.istanbulsaglik.gov.tr/Eczane/nobetci](http://apps.istanbulsaglik.gov.tr/Eczane/nobetci)にリクエストする – YouneL

関連する問題