miladworkshop 15 ارسال شده در دی 21، 2019 اگر به هر دلیلی نیاز دارید لینک های موجود در یک صفحه رو استخراج کنید و اونها رو در دیتابیس ذخیره کنید, میتونید از نمونه کد زیر استفاده کنید. توجه داشته باشید این نمونه کد, آدرس های تکراری رو نادیده میگیره و با هر بار اجرا, تنها آدرس های جدید توی دیتابیس ثبت خواهد شد و در نهایت در صفحه باز شده, گزارش تعداد لینک های ثبت شده, تکراری و خطاها رو مشاهده خواهید کرد. آموزش استفاده : ابتدا یک دیتابیس ایجاد کنید و کدهای زیر رو درون دیتابیس ایمپورت کنید : [ نمایش در سامانه Paste ] DROP TABLE IF EXISTS `site_data`; CREATE TABLE `site_data` ( `id` int(255) NOT NULL AUTO_INCREMENT, `key` varchar(32) DEFAULT NULL, `title` text, `source_url` text, KEY `id` (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4; سپس فایل index.php رو با یک ویرایشگر مناسب باز کرده و اطلاعات زیر رو ویرایش کنید : فایل index.php : [ نمایش در سامانه Paste ] <?php // Target URL $target_url = "https://miladworkshop.ir"; // Database Setting $mysql_host = "localhost"; $mysql_user = "root"; $mysql_pass = ""; $mysql_name = "demo"; // Dont Edit This $dom = new DOMDocument(); @$dom->loadHTML(file_get_contents($target_url)); $xpath = new DOMXPath($dom); $hrefs = $xpath->evaluate("/html/body//a"); // Database Connection $db = mysqli_connect($mysql_host, $mysql_user, $mysql_pass, $mysql_name); $source = 0; $errors = 0; $duplicate = 0; $report = array(); for($i = 0; $i < $hrefs->length; $i++) { $href = $hrefs->item($i); $title = $href->nodeValue; $url = $href->getAttribute('href'); $url = filter_var($url, FILTER_SANITIZE_URL); $key = md5($url); // Validate URL if(!filter_var($url, FILTER_VALIDATE_URL) === false) { $num_row = $db->query("SELECT * FROM `site_data` WHERE `key` = '{$key}'"); if (mysqli_num_rows($num_row) > 0) { $duplicate++; $report[] = "Duplicate Data : {$key}"; } else { if ($db->query("insert into `site_data` (`key`, `title`, `source_url`) values('{$key}','{$title}','{$url}')")) { $source++; $report[] = "Data added successfully : {$key}"; } else { $errors++; $report[] = "Error : ". mysqli_error($db); } } } } echo "<span style='color:green;'>{$source}</span> Success - <span style='color:orange;'>{$duplicate}</span> Duplicate</span> - <span style='color:red;'>{$errors}</span> Failed</span>"; // Report echo "<hr /><textarea rows=16 cols=100>"; foreach ($report as $err) { echo "{$err}\n"; } echo "</textarea>"; ?> نقل قول پارامتر target_url : آدرس سایت / صفحه مورد نظر به منظور استخراج لینک های موجود. نقل قول پارامترهای دیتابیس ( mysql ) به شرح زیر : $mysql_host = "localhost"; // آدرس دیتابیس $mysql_user = "root"; // نام کاربری دیتابیس $mysql_pass = "****"; // کلمه عبور دیتابیس $mysql_name = "demo"; // نام دیتابیس سایر پارامترها رو بدون تغییر رها کنید فایل ZIP شده اسکریپت و دیتابیس پیوست شد Url Extractor.zip 1 نقل قول به اشتراک گذاری این ارسال لینک به ارسال به اشتراک گذاری در سایت های دیگر
gorgoshir 1 ارسال شده در بهمن 2، 2019 salam mamnoon babat pasekhetonn 1 نقل قول به اشتراک گذاری این ارسال لینک به ارسال به اشتراک گذاری در سایت های دیگر
gorgoshir 1 ارسال شده در بهمن 3، 2019 در در ۱۳۹۸/۷/۲۹ در 21:10، miladworkshop گفته است : اگر به هر دلیلی نیاز دارید لینک های موجود در یک صفحه رو استخراج کنید و اونها رو در دیتابیس ذخیره کنید, میتونید از نمونه کد زیر استفاده کنید. توجه داشته باشید این نمونه کد, آدرس های تکراری رو نادیده میگیره و با هر بار اجرا, تنها آدرس های جدید توی دیتابیس ثبت خواهد شد و در نهایت در صفحه باز شده, گزارش تعداد لینک های ثبت شده, تکراری و خطاها رو مشاهده خواهید کرد. آموزش استفاده : ابتدا یک دیتابیس ایجاد کنید و کدهای زیر رو درون دیتابیس ایمپورت کنید : [ نمایش در سامانه Paste ] DROP TABLE IF EXISTS `site_data`; CREATE TABLE `site_data` ( `id` int(255) NOT NULL AUTO_INCREMENT, `key` varchar(32) DEFAULT NULL, `title` text, `source_url` text, KEY `id` (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4; سپس فایل index.php رو با یک ویرایشگر مناسب باز کرده و اطلاعات زیر رو ویرایش کنید : فایل index.php : [ نمایش در سامانه Paste ] <?php // Target URL $target_url = "https://miladworkshop.ir"; // Database Setting $mysql_host = "localhost"; $mysql_user = "root"; $mysql_pass = ""; $mysql_name = "demo"; // Dont Edit This $dom = new DOMDocument(); @$dom->loadHTML(file_get_contents($target_url)); $xpath = new DOMXPath($dom); $hrefs = $xpath->evaluate("/html/body//a"); // Database Connection $db = mysqli_connect($mysql_host, $mysql_user, $mysql_pass, $mysql_name); $source = 0; $errors = 0; $duplicate = 0; $report = array(); for($i = 0; $i < $hrefs->length; $i++) { $href = $hrefs->item($i); $title = $href->nodeValue; $url = $href->getAttribute('href'); $url = filter_var($url, FILTER_SANITIZE_URL); $key = md5($url); // Validate URL if(!filter_var($url, FILTER_VALIDATE_URL) === false) { $num_row = $db->query("SELECT * FROM `site_data` WHERE `key` = '{$key}'"); if (mysqli_num_rows($num_row) > 0) { $duplicate++; $report[] = "Duplicate Data : {$key}"; } else { if ($db->query("insert into `site_data` (`key`, `title`, `source_url`) values('{$key}','{$title}','{$url}')")) { $source++; $report[] = "Data added successfully : {$key}"; } else { $errors++; $report[] = "Error : ". mysqli_error($db); } } } } echo "<span style='color:green;'>{$source}</span> Success - <span style='color:orange;'>{$duplicate}</span> Duplicate</span> - <span style='color:red;'>{$errors}</span> Failed</span>"; // Report echo "<hr /><textarea rows=16 cols=100>"; foreach ($report as $err) { echo "{$err}\n"; } echo "</textarea>"; ?> سایر پارامترها رو بدون تغییر رها کنید فایل ZIP شده اسکریپت و دیتابیس پیوست شد Url Extractor.zip 1.26 kB · 3 downloads سلام توی سایت miladworkshop.ir ثبت نام کنید, با اکانت سایت میلاد ورک شاپ میتونید توی سایت https://askoverflow.ir لاگین کنید سلام قسمت دوم سوال رو میشه کمکم کنید من چندتا کد ساختم با این کدی که دادم بهتون ولی همشون گیر میکنن مثلا یکیشون کلا دیگه احرا کد تموم نمیشه توی چندتاشون حطای میزنه که تایتل وجود نداره و ... وجود نداره متغیرش رو نداری مثلا کد: <?php $url=$_GET["url"]; function getta($url) { // Extract HTML using curl $ch = curl_init(); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); $data = curl_exec($ch); curl_close($ch); // Load HTML to DOM Object $dom = new DOMDocument(); @$dom->loadHTML($data); // Parse DOM to get Title $nodes = $dom->getElementsByTagName('title'); $title = $nodes->item(0)->nodeValue; // Parse DOM to get Meta Description $metas = $dom->getElementsByTagName('meta'); $body = ""; for ($i = 0; $i < $metas->length; $i ++) { $meta = $metas->item($i); if ($meta->getAttribute('name') == 'description') { $body = $meta->getAttribute('content'); } } /// keword // $metas = $dom->getElementsByTagName('meta'); // $kew = ""; // for ($i = 0; $i < $metas->length; $i ++) { $kewta = $metas->item($i); if ($kewta->getAttribute('name') == 'keywords') { $kew = $kewta->getAttribute('content'); } // } /////////// // $metas = $dom->getElementsByTagName('meta'); // $smap = ""; // for ($i = 0; $i < $metas->length; $i ++) { $mapta = $metas->item($i); if ($mapta->getAttribute('name') == 'sitemap') { $smap = $mapta->getAttribute('content'); } // } /////////// // $metas = $dom->getElementsByTagName('meta'); // $ico = ""; // for ($i = 0; $i < $metas->length; $i ++) { $icta = $metas->item($i); if ($icta->getAttribute('name') == 'favicon') { $ico = $icta->getAttribute('content'); } // } /////////// /////////// /// keword //// sitemap //// sitemap // Parse DOM to get Images $image_urls = array(); $images = $dom->getElementsByTagName('img'); for ($i = 0; $i < $images->length; $i ++) { $image = $images->item($i); $src = $image->getAttribute('src'); if(filter_var($src, FILTER_VALIDATE_URL)) { $image_urls = $src; // echo $src; } } //// link exetra $xpath = new DOMXPath($dom); $link_urls = array(); $hrefs = $xpath->evaluate("/html/body//a"); //echo $hrefs; for ($i = 0; $i < $hrefs->length; $i ++) { $href = $hrefs->item($i); $url = $href->getAttribute('href'); $url = filter_var($url, FILTER_SANITIZE_URL); // validate url if(!filter_var($url, FILTER_VALIDATE_URL) === false){ $link=$url; echo $link; } } //// link extra $output = array( 'title' => $title, 'src' => $src, 'body' => $body, 'kew' => $kew, 'link' => $url, 'ico' => $ico, 'smap' => $smap ); return $output; } echo "<pre>"; print_r(getta($url)); echo "<hr>"; echo $title; echo "<hr>"; echo $link; echo "<hr>"; echo $src; echo "<hr>"; //$tit=($output[title]); // echo json_encode($output); echo "<pre>"; echo "<br>"; echo $title; echo "<br>"; echo $link; echo "<hr>"; echo "<hr>"; echo $url; print_r($src); echo "<hr>"; echo "<hr>"; echo $src; echo "<br>"; echo $body; echo "<br>"; خطا میده میگه Fatal error: Call to a member function getAttribute() on a non-object in D:\0000000111\htdocs\cod\cod\00\get2.php on line 38لط لطفا کمک کنید مشکل رو حل کنم واقعا بدجور درسر ساز شده برام سوال توی اون فروم بود اینه من بخوام به کد شما این چندتا امکان رو هم اضافه کنم قسمت اسکرایپ کردن سایت کد چجوری میشه مثلا میخوام کد اینجوری بشه اگه کد اول این باشه <?php$dom = new DOMDocument();@$dom->loadHTML($urls);$xpath = new DOMXPath($dom);$hrefs = $xpath->evaluate("/html/body//a");for($i = '0' ; $i < $hrefs->length; $i++){$href = $hrefs->item($i);$url = $href->getAttribute('href');$url = filter_var($url, FILTER_SANITIZE_URL);// validate urlif(!filter_var($url, FILTER_VALIDATE_URL) === false){echo '<a href="'.$url.'">'.$url.'</a><br />';}} کد دوم این میشه <?php // Target URL // Dont Edit This $dom = new DOMDocument(); @$dom->loadHTML(file_get_contents($target_url)); $xpath = new DOMXPath($dom); $hrefs = $xpath->evaluate("/html/body//a"); $source = 0; $errors = 0; $duplicate = 0; $report = array(); for($i = 0; $i < $hrefs->length; $i++) { $href = $hrefs->item($i); $title = $href->nodeValue; $url = $href->getAttribute('href'); $url = filter_var($url, FILTER_SANITIZE_URL); $key = md5($url); // Validate URL if(!filter_var($url, FILTER_VALIDATE_URL) === false) { } اگه کد تازه ما اینم باشه: // Load HTML to DOM Object $dom = new DOMDocument(); @$dom->loadHTML($data); // Parse DOM to get Title $nodes = $dom->getElementsByTagName('title'); @$title = $nodes->item(0)->nodeValue; $tit = $title; // Parse DOM to get Meta Description $metas = $dom->getElementsByTagName('meta'); $body = ""; for ($i = 0; $i < $metas->length; $i ++) { $meta = $metas->item($i); if ($meta->getAttribute('name') == 'description') { $body = $meta->getAttribute('content'); $meta9 = $metas->item($i); if ($meta9->getAttribute('name') == 'keywords') { $body9 = $meta2->getAttribute('content'); $kew1 = $body9; echo $kew1; echo "<hr>"; } } } // Parse DOM to get Meta keywords $metas2 = $dom->getElementsByTagName('meta'); $body2 = ""; for ($i = 0; $i < $metas->length; $i ++) { $meta2 = $metas2->item($i); if ($meta2->getAttribute('name') == 'keywords') { $body2 = $meta2->getAttribute('content'); $kew = $body2; } } // Parse DOM to get Meta sitemap $metas3 = $dom->getElementsByTagName('meta'); $body3 = ""; for ($i = 0; $i < $metas->length; $i ++) { $meta3 = $metas3->item($i); if ($meta3->getAttribute('name') == 'sitemap') { $body3 = $meta3->getAttribute('content'); $map = $body3; } } // Parse DOM to get Meta favicon $metas4 = $dom->getElementsByTagName('meta'); $body4 = ""; for ($i = 0; $i < $metas->length; $i ++) { $meta4 = $metas4->item($i); if ($meta4->getAttribute('name') == 'favicon') { $body4 = $meta4->getAttribute('content'); $icon = $body4; } } // Parse DOM to get Images $image_urls = array(); $images = $dom->getElementsByTagName('img'); for ($i = 0; $i < $images->length; $i ++) { $image = $images->item($i); $src = $image->getAttribute('src'); } // Images 2 $image_urls = array(); $images = $dom->getElementsByTagName('img'); $imgg = ""; for ($i = 0; $i < $images->length; $i ++) { $image = $images->item($i); if ($src = $image->getAttribute('src')){ $imgg = $image->getAttribute('src'); } } // end Images 2 $date = date("r"); @$out1 = $title; @$out2 = $body; @$out3 = $kew; @$out4 = $body3; @$out5 = $body4; @$out6 = $src; @$out7 = $imgg; کد جدید چی میشه؟ منظورم این هست که به قسمت دام ایکس ام ال کد اول چه چیزایی باید اضافه کنم برای اینکه بهش تایتل و دیسکریپشن و ایمج و آیکون و برچسب پست بزارم بابات کمکتون بازم ممنونم دستتون درد نکنه دعای خیلی ها پشتتونه نقل قول به اشتراک گذاری این ارسال لینک به ارسال به اشتراک گذاری در سایت های دیگر
miladworkshop 15 ارسال شده در بهمن 4، 2019 در در ۱۳۹۸/۸/۱۲ در 15:32، gorgoshir گفته است : سلام قسمت دوم سوال رو میشه کمکم کنید من چندتا کد ساختم با این کدی که دادم بهتون ولی همشون گیر میکنن مثلا یکیشون کلا دیگه احرا کد تموم نمیشه توی چندتاشون حطای میزنه که تایتل وجود نداره و ... وجود نداره متغیرش رو نداری مثلا کد: <?php $url=$_GET["url"]; function getta($url) { // Extract HTML using curl $ch = curl_init(); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); $data = curl_exec($ch); curl_close($ch); // Load HTML to DOM Object $dom = new DOMDocument(); @$dom->loadHTML($data); // Parse DOM to get Title $nodes = $dom->getElementsByTagName('title'); $title = $nodes->item(0)->nodeValue; // Parse DOM to get Meta Description $metas = $dom->getElementsByTagName('meta'); $body = ""; for ($i = 0; $i < $metas->length; $i ++) { $meta = $metas->item($i); if ($meta->getAttribute('name') == 'description') { $body = $meta->getAttribute('content'); } } /// keword // $metas = $dom->getElementsByTagName('meta'); // $kew = ""; // for ($i = 0; $i < $metas->length; $i ++) { $kewta = $metas->item($i); if ($kewta->getAttribute('name') == 'keywords') { $kew = $kewta->getAttribute('content'); } // } /////////// // $metas = $dom->getElementsByTagName('meta'); // $smap = ""; // for ($i = 0; $i < $metas->length; $i ++) { $mapta = $metas->item($i); if ($mapta->getAttribute('name') == 'sitemap') { $smap = $mapta->getAttribute('content'); } // } /////////// // $metas = $dom->getElementsByTagName('meta'); // $ico = ""; // for ($i = 0; $i < $metas->length; $i ++) { $icta = $metas->item($i); if ($icta->getAttribute('name') == 'favicon') { $ico = $icta->getAttribute('content'); } // } /////////// /////////// /// keword //// sitemap //// sitemap // Parse DOM to get Images $image_urls = array(); $images = $dom->getElementsByTagName('img'); for ($i = 0; $i < $images->length; $i ++) { $image = $images->item($i); $src = $image->getAttribute('src'); if(filter_var($src, FILTER_VALIDATE_URL)) { $image_urls = $src; // echo $src; } } //// link exetra $xpath = new DOMXPath($dom); $link_urls = array(); $hrefs = $xpath->evaluate("/html/body//a"); //echo $hrefs; for ($i = 0; $i < $hrefs->length; $i ++) { $href = $hrefs->item($i); $url = $href->getAttribute('href'); $url = filter_var($url, FILTER_SANITIZE_URL); // validate url if(!filter_var($url, FILTER_VALIDATE_URL) === false){ $link=$url; echo $link; } } //// link extra $output = array( 'title' => $title, 'src' => $src, 'body' => $body, 'kew' => $kew, 'link' => $url, 'ico' => $ico, 'smap' => $smap ); return $output; } echo "<pre>"; print_r(getta($url)); echo "<hr>"; echo $title; echo "<hr>"; echo $link; echo "<hr>"; echo $src; echo "<hr>"; //$tit=($output[title]); // echo json_encode($output); echo "<pre>"; echo "<br>"; echo $title; echo "<br>"; echo $link; echo "<hr>"; echo "<hr>"; echo $url; print_r($src); echo "<hr>"; echo "<hr>"; echo $src; echo "<br>"; echo $body; echo "<br>"; خطا میده میگه Fatal error: Call to a member function getAttribute() on a non-object in D:\0000000111\htdocs\cod\cod\00\get2.php on line 38لط لطفا کمک کنید مشکل رو حل کنم واقعا بدجور درسر ساز شده برام سوال توی اون فروم بود اینه من بخوام به کد شما این چندتا امکان رو هم اضافه کنم قسمت اسکرایپ کردن سایت کد چجوری میشه مثلا میخوام کد اینجوری بشه اگه کد اول این باشه <?php$dom = new DOMDocument();@$dom->loadHTML($urls);$xpath = new DOMXPath($dom);$hrefs = $xpath->evaluate("/html/body//a");for($i = '0' ; $i < $hrefs->length; $i++){$href = $hrefs->item($i);$url = $href->getAttribute('href');$url = filter_var($url, FILTER_SANITIZE_URL);// validate urlif(!filter_var($url, FILTER_VALIDATE_URL) === false){echo '<a href="'.$url.'">'.$url.'</a><br />';}} کد دوم این میشه <?php // Target URL // Dont Edit This $dom = new DOMDocument(); @$dom->loadHTML(file_get_contents($target_url)); $xpath = new DOMXPath($dom); $hrefs = $xpath->evaluate("/html/body//a"); $source = 0; $errors = 0; $duplicate = 0; $report = array(); for($i = 0; $i < $hrefs->length; $i++) { $href = $hrefs->item($i); $title = $href->nodeValue; $url = $href->getAttribute('href'); $url = filter_var($url, FILTER_SANITIZE_URL); $key = md5($url); // Validate URL if(!filter_var($url, FILTER_VALIDATE_URL) === false) { } اگه کد تازه ما اینم باشه: // Load HTML to DOM Object $dom = new DOMDocument(); @$dom->loadHTML($data); // Parse DOM to get Title $nodes = $dom->getElementsByTagName('title'); @$title = $nodes->item(0)->nodeValue; $tit = $title; // Parse DOM to get Meta Description $metas = $dom->getElementsByTagName('meta'); $body = ""; for ($i = 0; $i < $metas->length; $i ++) { $meta = $metas->item($i); if ($meta->getAttribute('name') == 'description') { $body = $meta->getAttribute('content'); $meta9 = $metas->item($i); if ($meta9->getAttribute('name') == 'keywords') { $body9 = $meta2->getAttribute('content'); $kew1 = $body9; echo $kew1; echo "<hr>"; } } } // Parse DOM to get Meta keywords $metas2 = $dom->getElementsByTagName('meta'); $body2 = ""; for ($i = 0; $i < $metas->length; $i ++) { $meta2 = $metas2->item($i); if ($meta2->getAttribute('name') == 'keywords') { $body2 = $meta2->getAttribute('content'); $kew = $body2; } } // Parse DOM to get Meta sitemap $metas3 = $dom->getElementsByTagName('meta'); $body3 = ""; for ($i = 0; $i < $metas->length; $i ++) { $meta3 = $metas3->item($i); if ($meta3->getAttribute('name') == 'sitemap') { $body3 = $meta3->getAttribute('content'); $map = $body3; } } // Parse DOM to get Meta favicon $metas4 = $dom->getElementsByTagName('meta'); $body4 = ""; for ($i = 0; $i < $metas->length; $i ++) { $meta4 = $metas4->item($i); if ($meta4->getAttribute('name') == 'favicon') { $body4 = $meta4->getAttribute('content'); $icon = $body4; } } // Parse DOM to get Images $image_urls = array(); $images = $dom->getElementsByTagName('img'); for ($i = 0; $i < $images->length; $i ++) { $image = $images->item($i); $src = $image->getAttribute('src'); } // Images 2 $image_urls = array(); $images = $dom->getElementsByTagName('img'); $imgg = ""; for ($i = 0; $i < $images->length; $i ++) { $image = $images->item($i); if ($src = $image->getAttribute('src')){ $imgg = $image->getAttribute('src'); } } // end Images 2 $date = date("r"); @$out1 = $title; @$out2 = $body; @$out3 = $kew; @$out4 = $body3; @$out5 = $body4; @$out6 = $src; @$out7 = $imgg; کد جدید چی میشه؟ منظورم این هست که به قسمت دام ایکس ام ال کد اول چه چیزایی باید اضافه کنم برای اینکه بهش تایتل و دیسکریپشن و ایمج و آیکون و برچسب پست بزارم بابات کمکتون بازم ممنونم دستتون درد نکنه دعای خیلی ها پشتتونه سلام کدها رو توی تگ code قرار بدید تا بشه اونها رو بدون اضافات کپی کرد و برسی کنم نقل قول به اشتراک گذاری این ارسال لینک به ارسال به اشتراک گذاری در سایت های دیگر