نمایش نتایج 1 تا 5 از 5

نام تاپیک: استخراج داده های یک جدول در وب

  1. #1

    استخراج داده های یک جدول در وب

    سلام
    من می خواهم از لینک زیر جدول قابل استفاده در برنامه نویسی استخراج کنم

    http://offlinecourse.iaun.ac.ir/ShowList.php?Code=99604

    راحتترین راهش کپی در اکسل است ولی به علت داشتن تگ <BR> در ستون زمان تشکیل کلاس عملا هر رکورد در هر سطر اکسل قرار نمیگیره
    آیا میشه با php یا هر چیز دیگه ای سریع و دقیق این اطلاعات را تبدیل به جدول کرد
    (متاسفانه دانشگاه ها همکاری نمی کنند که خروجی مناسب بهم بدهند)

  2. #2
    کاربر تازه وارد آواتار aalmair
    تاریخ عضویت
    آبان 1392
    محل زندگی
    http://arashcart.ir http://mag.arashcart.ir http://job.arashcart.ir
    پست
    99

    نقل قول: استخراج داده های یک جدول در وب


    <?php



    function atrributes_str($str='',$start_index=0,&$attributes _str_res=''){

    //start index must be ' ' or >'>'
    $div_sign_end_tag=0;
    $attributes_str_res='';
    $attributes_str='';
    $i=$start_index;
    $end_of_attribute=$i;
    $article=$str;
    $size_article=strlen($str) ;

    $attributes=array();

    $end_of_tag=0;

    if($i>=$size_article){
    return $i;
    }



    if(!(ord($article[$i])<=32||$article[$i]=='>')){
    return $i;
    }



    while($i<$size_article){
    if($article[$i]==">"){
    //$i++;
    $attributes_str_res=$attributes_str;
    return $i;

    break;
    }elseif($i+1<=$size_article&&$article[$i]=='/'&&$article[$i+1]=='>'){

    $i++;
    $attributes_str_res=$attributes_str.' /';
    return $i;
    }

    if($article[$i]=='=' &&ord($article[$i-1])>32){
    $j=$i-1;
    $k=$j;

    while($j>=0){
    if((($j-1)>=0&&ord($article[$j-1])<=32)||($j-1)<=$end_of_attribute){
    break;
    }
    $j--;
    }

    if(isset($attribute_name)){
    unset($attribute_name);
    }

    if($j<$k){

    $attribute_name=substr($article,$j,$k-$j+1);
    }elseif($j==$k){
    $attribute_name=$article[$j];
    }






    $i++;
    while($i<$size_article&&ord($article[$i])<=32){
    $i++;
    }





    $attribute_value='';

    if($article[$i]=="'"){
    $i++;
    while($i<$size_article){
    if($article[$i]=="'"){
    $end_of_attribute=$i;
    break;
    }
    $attribute_value.=$article[$i];
    $i++;
    }

    }elseif($article[$i]=='"'){
    $i++;
    while($i<$size_article){
    if($article[$i]=='"'){
    $end_of_attribute=$i;
    break;
    }
    $attribute_value.=$article[$i];
    $i++;
    }

    }else{

    while($i<$size_article&&ord($article[$i])<=32){

    $i++;

    }

    while($i<$size_article&&ord($article[$i])>32){

    if($article[$i]=='>'){

    $end_of_tag=1;
    break;
    }elseif($i+1<=$size_article&&$article[$i]=='/'&&$article[$i+1]=='>'){
    $i++;
    $div_sign_end_tag=1;
    $end_of_tag=1;
    break;
    }elseif($article[$i]=='<'){
    $attribute_value.=$this->less_sign_equal;
    $i++ ;
    }else{
    $attribute_value.=$article[$i];
    $i++;
    }



    }

    }

    if(isset($attribute_name)&&$attribute_name){
    $attribute_name=strtolower($attribute_name);


    $attribute_name_exist=0;
    for($t=0;$t<count($attributes);$t+=2){
    if($attributes[$t]==$attribute_name){
    $attribute_name_exist=1;
    break;
    }
    }

    if($attribute_name_exist==0){
    $attributes[]=$attribute_name;
    $attributes[]=$attribute_value;

    $disallowd_attri=0;



    $attributes_str.=' ';
    for($c=0;$c<strlen($attribute_name);$C++‎‎){
    if($attribute_name[$c]=='<'){
    $attributes_str.='&lt;';
    }else{
    $attributes_str.=$attribute_name[$c];
    }
    }
    $attributes_str.='="'.$attribute_value.'"';


    }
    unset($attribute_name);

    }

    }
    if($end_of_tag){
    break;
    }

    $i++;

    }
    if($div_sign_end_tag){
    $attributes_str.=' /';
    }
    $attributes_str_res=$attributes_str;
    return $i;

    }
    function array_2_csv($array) {
    $res = '';
    foreach ($array as $item)
    {
    $res .= implode( ',',$item);
    $res .= "<br>" ;
    }
    return $res ;
    }




    $str = file_get_contents('http://offlinecourse.iaun.ac.ir/ShowList.php?Code=99604') ;
    $size = strlen($str);
    $index= 0;

    $csv = array() ;
    $tr_index= 0;






    do
    {
    $find_index_tr_start = strpos($str,'<tr',$index) ;




    if($find_index_tr_start !==false)
    {
    $index = $find_index_tr_start ;



    $find_index_tr_end = strpos($str,'</tr',$index) ;



    do
    {
    $find_index_td_start = strpos($str,'<td',$index) ;

    if($find_index_td_start !== false && $find_index_td_start < $find_index_tr_end)
    {

    $index = $find_index_td_start ;
    $find_index_td_end = strpos($str,'</td',$index) ;

    $index = atrributes_str($str,$index) ;


    $td_data = substr($str,$find_index_td_start,$find_index_td_en d-$find_index_td_start) ;
    $td_data = strip_tags($td_data) ;
    $td_data = html_entity_decode($td_data,ENT_QUOTES,'utf-8') ;
    $td_data = str_replace(',',"\,",$td_data) ;

    $csv [$tr_index][] = $td_data ;





    if($find_index_td_end !== false)
    {
    $index = $find_index_td_end -1 ;
    }





    }



    }while($find_index_td_start !== false && $find_index_td_start < $find_index_tr_end) ;




    $tr_index ++ ;



    }






    }while($find_index_tr_start !== false) ;







    header("Content-Type: text/html; charset=utf-8");

    $csv_data = array_2_csv($csv);

    echo $csv_data;











    کد رو اجرا کن بعد خروجی رو داخل یک فایل که به صورت utf-8 ذخیره شده قرار بده1.zip
    آخرین ویرایش به وسیله aalmair : سه شنبه 23 خرداد 1396 در 10:00 صبح

  3. #3

    نقل قول: استخراج داده های یک جدول در وب

    ممنون از شما
    فقط این خطا را میده
    Parse error: in C:\wamp64\www\exportclasses.php on line 160

    البته متغیر C بزرگ بود که کوچکش کردم ولی این خطا را متوجه نمیشوم

    فکر کنم دو خط 152 و 153 هم مشکل داشته باشد

  4. #4
    کاربر تازه وارد آواتار aalmair
    تاریخ عضویت
    آبان 1392
    محل زندگی
    http://arashcart.ir http://mag.arashcart.ir http://job.arashcart.ir
    پست
    99

    نقل قول: استخراج داده های یک جدول در وب

    متاسفانه ویرایش گر مشکل داره سورس کد رو براتون اضافه کردم



    index.zip

  5. #5

    نقل قول: استخراج داده های یک جدول در وب

    دست شما درد نکنه

    یه سوال دیگه:
    برخی دانشگاهها مانند کرج:
    http://edu.kiau.ac.ir/list_mehman/list_ara.aspx

    لیست دروس ارائه شده بوسیله انتخاب کومبوباکس و بصورت اجکسی نمایش داده میشود من چطوری می توانم مسیر آنرا به کدم بدهم و لازم نباشه خودم با کومبو انتخاب کنم و خروجی را در فایل html ذخیره و مسیر فایل را به کدم بدهم؟؟ اخه اینطوری خیلی زمانبر می شود
    آیا می شود خروجی یه اجکس را در php بدست آورد (همانند یک URL معمولی)

تاپیک های مشابه

  1. پاسخ: 2
    آخرین پست: یک شنبه 10 اردیبهشت 1391, 17:17 عصر
  2. پاسخ: 1
    آخرین پست: جمعه 06 اسفند 1389, 10:57 صبح
  3. پاسخ: 1
    آخرین پست: جمعه 06 اسفند 1389, 10:11 صبح
  4. پاسخ: 16
    آخرین پست: یک شنبه 17 تیر 1386, 13:51 عصر
  5. یه سئوال در مورد قرار دادن داده های یک جدول در جدول دیگر
    نوشته شده توسط مهدی رحیم زاده در بخش C#‎‎
    پاسخ: 4
    آخرین پست: چهارشنبه 25 بهمن 1385, 23:14 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •