📁 PHP Dosya Yöneticisi
/
/
home
/
demodesigncom
/
otogaleriscripti.demodesign.com.tr
/
sahibinden
📝
sahibinden.class.php
← Geri Dön
<?php /** * Class Sahibinden * @author Tayfun Erbilen * @blog http://www.erbilen.net * @mail tayfunerbilen@gmail.com * @date 14.2.2014 * @update 9.8.2020 * @updater_mail enbiri@gmail.com */ class Kategori{ public $Link,$Parent,$Name; } class Ilan{ public $Link; } class Sahibinden { static $data = array (); /** * Tüm Kategorileri Listelemek İçin Kullanılır * * @param null $url * @return array */ static function Kategori( $url = NULL ) { if ( $url != NULL ) { $open = self::Curl( 'https://www.sahibinden.com/alt-kategori/' . $url ); preg_match_all('@<li>(.*?)<a href="/(.*?)">(.*?)</a>(.*?)<span>(.*?)</span>(.*?)</li>@si',$open, $result); unset($result[2][0]);unset($result[3][0]);unset($result[5][0]); for ($i=0; $i <count($result[2]) ; $i++) { self::$data[ ] = array ( 'title' => $result[3][$i], 'icerik' => trim($result[5][$i]), 'uri' => trim($result[ 2 ][ $i ]), 'url' => 'https://www.sahibinden.com/' . $result[ 2 ][ $i ] ); } } else { $open = self::Curl( 'https://www.sahibinden.com/' ); preg_match_all( '@<li class="">(.*?)<a href="/kategori/(.*?)">(.*?)</a>(.*?)<span>((.*?))(.*?)</span>(.*?)</li>@si', $open, $result ); foreach ( $result[ 2 ] as $key => $val ) { self::$data[ ] = array ( 'title' => trim($result[3][$key]), 'icerik' => trim($result[7][$key]), 'uri' => str_replace( '/kategori/', '', $result[ 2 ][ $key ] ), 'url' => 'https://www.sahibinden.com/kategori/' . $result[ 2 ][ $key ] ); } } return self::$data; } static function UserIlanlari( $url = NULL ) { $open = self::Curl( $url ); $html = str_get_html($open); /** @var simple_html_dom_node $ff */ $ff = $html->find("table>tbody>tr") ; foreach ($ff as $f) { $f2 = $f->find("td>a",0); self::$data[]= trim($f2->href); } // echo $html; $next = $html->find(".pageNaviButtons>li",-1); if($next!=null && $next->find("a",0)){ if($next->find("a",0)->title=="Sonraki"){ self::UserIlanlari($url.$next->find("a",0)->href); } } return self::$data; } /** * yuser Kategorileri Listelemek İçin Kullanılır * * @param null $url * @return array */ static function UserKategori( $url = NULL ) { $open = self::Curl( $url ); $html = str_get_html($open); /** @var simple_html_dom_node $ff */ $ff = $html->find(".categories",0) ; self::UserAltKategori($url,$ff); // preg_match_all('@<li>(.*?)<a href="/(.*?)">(.*?)</a>(.*?)<span>(.*?)</span>(.*?)</li>@si',$open, $result); // print_r($result); // print_r($ff->innertext() ); /* exit(); unset($result[2][0]);unset($result[3][0]);unset($result[5][0]); for ($i=0; $i <count($result[2]) ; $i++) { self::$data[ ] = array ( 'title' => $result[3][$i], 'icerik' => trim($result[5][$i]), 'uri' => trim($result[ 2 ][ $i ]), 'url' => 'https://www.sahibinden.com/' . $result[ 2 ][ $i ] ); } */ return self::$data; } static function UserAltKategori($url,$ff,$level=0){ /** @var simple_html_dom_node $ff */ //echo $ff->innertext(); if($ff==null)return; $fc = $ff->find("li.level".$level,0); if($fc==null)return; $i=0; while(true) { $kat = new Kategori(); $kat->Link=$url.$fc->find("a",0)->href; $kat->Name=$fc->find("a",0)->innertext; $kat->Parent=$ff->find("a",0)->innertext; self::$data[]=$kat; // echo "\n-".$ff->tag."------\n"; //print_r($kat); //echo "\n-------\n"; /** @var simple_html_dom_node $ff */ $gg= str_get_html(self::curl($kat->Link)); self::UserAltKategori( $url, $gg, $level+1 ); $fc=$ff->find("li.level".$level,++$i); // self::curl($fc->find("ul",0)); if($fc==null)break; } } /** * Kategoriye ait ilanları listeler. * * @param $kategoriLink * @param string $sayfa * @return array */ static function Liste( $url, $sayfa = '0' ) { $items = array (); $page = '?pagingOffset=' . $sayfa; $open = self::Curl( $url .$page ); preg_match_all( '@<tr data-id="(.*?)" class="searchResultsItem(.*?)">(.*?)</tr>@si', $open, $result ); foreach ( $result[ 2 ] as $detay ) { preg_match( '@<img src="(.*?)" alt="(.*?)" title="(.*?)"/>@si', $open, $image ); preg_match( '/<a class="classifiedTitle" href="(.*?)">(.*?)<\/a>/', $open, $title ); $items[ ] = array ( 'image' => $image[ 1 ], 'title' => self::replaceSpace($image[ 3 ] ? $image[ 3 ] : trim( $title[ 2 ] )), 'url' => $url . $title[ 1 ] ); } return $items; } /** * İlan detaylarını listeler. * * @param null $url * @return array */ static function Detay( $url = NULL ) { if ( $url != NULL ) { $open = self::Curl( $url ); //cat preg_match_all( '@<li.*?breadcrumbItem".*?a.*?<span.*?>(.*?)</span>@si', $open, $imgs ); foreach ( $imgs[ 1 ] as $index => $val ) { $categories[ ] = trim($val) ; } // id preg_match_all('/classifiedId">(.*?)<\/span>/', $open, $sid); $sid = $sid[1][0]; // title preg_match_all('/<div class="classifiedDetailTitle"> <h1>(.*?)<\/h1>/', $open, $titles); $title = $titles[1][0]; // images preg_match_all( '@<img src="(.*?)" data-src="(.*?)" alt="(.*?)"/>@si', $open, $imgs ); foreach ( $imgs[ 1 ] as $index => $val ) { $images[ ] = array ( 'thumb' => $val, 'big' => $imgs[ 2 ][ $index ] ); } // açıklama /* preg_match_all( '/<div id="classifiedDescription" class="uiBoxContainer">(.*?)<\/div>/', $open, $desc ); $description = array ( 'html' => self::replaceSpace($desc[ 1 ][ 0 ]), 'no_html' => self::replaceSpace(strip_tags( $desc[ 1 ][ 0 ] )) ); */ /** @var simple_html_dom_node $desc */ $desc= str_get_html($open); $description = array ( 'html' => self::replaceSpace($desc->find("#classifiedDescription",0)->innertext() ), 'no_html' => self::replaceSpace(strip_tags( $desc->find("#classifiedDescription",0)->innertext() )) ); // genel özellikler preg_match_all( '/<ul class="classifiedInfoList">(.*?)<\/ul>/', $open, $propertie ); $prop = self::replaceSpace( $propertie[ 1 ][ 0 ] ); preg_match_all( '/<li> <strong>(.*?)<\/strong>(.*?)<span(.*?)>(.*?)<\/span> <\/li>/', $prop, $p ); foreach ( $p[ 1 ] as $index => $val ) { $properties[ trim( $val ) ] = str_replace( ' ', '', trim( $p[ 4 ][ $index ] ) ); } // tüm özellikleri preg_match( '/<div class="uiBoxContainer classifiedDescription" id="classifiedProperties">(.*?)<\/div>/', $open, $allProperties ); $allPropertiesString = self::replaceSpace( $allProperties[ 1 ] ); preg_match_all( '/<h3>(.*?)<\/h3>/', $allPropertiesString, $propertiesTitles ); preg_match_all( '/<ul>(.*?)<\/ul>/', $allPropertiesString, $propertiesResults ); foreach ( $propertiesResults[ 1 ] as $index => $val ) { preg_match_all( '/<li class="(.*?)">(.*?)<\/li>/', $val, $result ); foreach ( $result[ 1 ] as $index2 => $selected ) { $props[ $propertiesTitles[ 1 ][ $index ] ][ ] = array ( $result[ 2 ][ $index2 ], $selected ); } } // price preg_match('/<div class="classifiedInfo ">(.*?)<\/div>/', $open, $extra); $extras = self::replaceSpace($extra[1]); preg_match('/<h3>(.*?)<input/' , $extras, $price); $price = trim($price[1]); preg_match_all('@<a href="/(.*?)">(.*?)</a>@si', $open, $addrs); $address = array( 'il' => trim($addrs[2][0]), 'ilce' => trim($addrs[2][1]), 'mahalle' => trim($addrs[2][2]) ); // username preg_match('/<h5>(.*?)<\/h5>/', $open, $username); $username = $username[1]; // contact info preg_match('/<ul id="phoneInfoPart" class="userContactInfo">(.*?)<\/ul>/', $open, $contact_info); $contact_info = self::replaceSpace($contact_info[1]); preg_match_all('@<strong(.*?)>(.*?)</strong>(.*?)<span class="(.*?)">(.*?)</span>@si', $contact_info, $contact); foreach ( $contact[5] as $index => $val ){ $contacts[$contact[2][$index]] = $val; } $data = array( 'sid' => $sid, 'title' => $title, 'images' => $images, 'address' => $address, 'description' => $description, 'properties' => $properties, 'all_properties' => $props, 'categories' =>$categories, 'price' => $price, 'user' => array( 'name' => $username, 'contact' => $contacts ) ); return $data; } } /** * Gereksiz boşlukları temizler. * * @param $string * @return string */ static function replaceSpace( $string ) { $string = preg_replace( "/\s+/", " ", $string ); $string = trim( $string ); return $string; } /** * @param $url * @param null $proxy * @return mixed */ private static function Curl( $url, $proxy = NULL ) { $proxy = '185.169.53.45:8000'; $proxyauth = 'huseyin:123456'; $options = array ( CURLOPT_RETURNTRANSFER => true, CURLOPT_HEADER => false, CURLOPT_ENCODING => "", CURLOPT_AUTOREFERER => true, CURLOPT_CONNECTTIMEOUT => 30, CURLOPT_TIMEOUT => 30, //CURLOPT_PROXY => $proxy, //CURLOPT_PROXYUSERPWD => $proxyauth, CURLOPT_MAXREDIRS => 10, CURLOPT_SSL_VERIFYPEER => false, CURLOPT_REFERER => "https://sahibinden.com", CURLOPT_USERAGENT=>"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36" //CURLOPT_COOKIEJAR=> 'cookies.txt', //CURLOPT_COOKIEFILE=> 'cookies.txt' ); $ch = curl_init("$url"); curl_setopt_array( $ch, $options ); $content = curl_exec( $ch ); $err = curl_errno( $ch ); $errmsg = curl_error( $ch ); $header = curl_getinfo( $ch ); curl_close( $ch ); $header[ 'errno' ] = $err; $header[ 'errmsg' ] = $errmsg; $header[ 'content' ] = $content; file_put_contents("son.html",$content); return str_replace( array ( "\n", "\r", "\t" ), NULL, $header[ 'content' ] ); } }
💾 Kaydet
İptal
📝 Yeniden Adlandır
İptal
Kaydet
🔐 Dosya İzinleri (chmod)
İzin Değeri:
Hızlı Seçim:
777
755
644
600
777
= Herkes okur/yazar/çalıştırır
755
= Sahip tam, diğerleri okur/çalıştırır
644
= Sahip okur/yazar, diğerleri okur
600
= Sadece sahip okur/yazar
İptal
Uygula