آموزش ساخت یک web scraper حرفه ای با php ( استخراج اطلاعات سایت )

web scraper حرفه ای با php – تاکنون کلمه خزنده وب یا استخراج اطلاعات صفحه وب را شنیده اید
بدین معنا که می توانید محتویات و داده های یک وبسایت را به صورت کامل استخراج کرده و استفاده کنید .
هم چنین با نام web crawler هم شناخته می شود .
کاربرد های Web Scraper
نمایش اطلاعات بورس
نمایش اطلاعات فروشگاه اینترنتی ( دیجیکالا ، مالتینا )
نمایش اطلاعات نیازمندی های آنلاین ( دیوار ، شیپور )
نمایش اطلاعات حساب کاربری
و …
شروع کار با Web Scraper
برای شروع به PHP 7.2 یا بالاتر و کتابخانه html parser با نام paquettg/php-html-parser نسخه 3.1.1 یا بالاتر نیاز دارید .
برای شروع ابتدا کتابخانه را با استفاده از composer نصب کنید .
composer require paquettg/php-html-parser
فایل index.php برای دریافت اطلاعات category دیجیکالا
قبل از چیز بهتر است از کارایی چند دستور باخبر شوید :
loadStr : بارگذاری html از طریق رشته به طور مستقیم .
find : جستجو در میان المنت های مختلف html معادل querySelector جاوا اسکریپت است .
getAttribute : دریافت attribute های html
شرح کارایی اسکریپت پایین : دقت داشته باشید که کد پایین فقط برای دیجیکالا تا زمانی که ساختار صفحه category تغییر نکند قابل اجرا هست .
<!DOCTYPE html>
<html lang="fa">
<head>
<meta charset="UTF-8">
<title>Rapidcode.iR - سورس کد</title>
<link rel="stylesheet" href="static/css/main.css">
</head>
<body>
<div class="container">
<a id="introduce" href="https://rapidcode.ir" target="_blank">رپید کد • کتابخانه مجازی برنامه نویسان</a>
<h1>محصولات دیجیکالا</h1>
<p>این اسکریپت فقط جنبه آموزشی داشته و هرگونه بهره برداری مالی باید توسط دیجیکالا تایید گردد .</p>
<?php
require "vendor/autoload.php";
use PHPHtmlParser\Dom;
if (!empty($_POST['crawlUrl'])) {
$dom = new Dom;
$raw_html = file_get_contents($_POST['crawlUrl']);
$dom->loadStr($raw_html);
$products = $dom->find("ul.c-listing__items.js-plp-products-list li .c-product-box");
foreach ($products as $product) {
$title = $product->getAttribute("data-title-fa");
$link = "https://www.digikala.com{$product->find('.js-product-url')->getAttribute("href")}";
$thumbnail = $product->find('.c-promotion-box__image img')->getAttribute("src");
$onsale = "---";
$rate = "---";
if (!empty($product->find('.c-promotion__badge.c-promotion__badge--special-sale')[0]))
$onsale = $product->find('.c-promotion__badge.c-promotion__badge--special-sale')->outerhtml;
if (!empty($product->find('.c-product-box__engagement-rating')[0]))
$rate = $product->find('.c-product-box__engagement-rating')->outerhtml;
$price = $product->find('.c-price')->outerhtml;
$vendor = $product->find('.c-product__main-seller.js-seller-text')->outerhtml;
echo "<div class=\"product-box\"><div id=\"onsale\">{$onsale}</div><img id=\"thumbnail\" src=\"{$thumbnail}\" alt=\"{$title}\"><h2 id=\"head1\"><a href=\"{$link}\">{$title}</a></h2><div id=\"rating\">{$rate}</div><div id=\"price\">{$price}</div><div id=\"vendor\">{$vendor}</div></div>";
}
} else {
?>
<form action="" method="post">
<input type="url" name="crawlUrl" id="crawlUrl" placeholder="(;">
<input type="submit" value="ثبت">
</form>
<?php
}
?>
</div>
</body>
</html>
فایل main.css ظاهر بهتر برنامه
.container{
margin: 0 auto;
width: 80%;
text-align: center;
direction: rtl;
}
#introduce{
display: block;
width: 100%;
font-size: 35px;
font-weight: bold;
color: white;
padding-bottom: 5px;
background-color: #4CAF50;
text-decoration: none;
margin-bottom: 15px;
}
/* Page Style */
.product-box{
width: 30%;
margin-left: 1%;
float: right;
border: 2px solid #03a9f4;
margin-bottom: 15px;
}
.product-box #onsale div{
background-color: mediumslateblue;
color: white;
}
.product-box #thumbnail{
width: 90%;
margin: 5px auto;
}
.product-box #head1{
font-size: 17px;
height: 40px;
}
.product-box #head1 a{
color: #ff9800;
text-decoration: none;
}
.product-box #rating{
text-align: left;
padding-left: 5px;
}
.product-box #price{
font-weight: bold;
font-size: 14px;
color: white;
margin: 5px 0;
padding: 5px 0;
background-color: #4caf50;
height: 27px;
overflow-y: scroll;
}
.product-box #vendor{
text-align: right;
margin: 3px 10px;
}
خروجی برنامه ( نتیجه )
این پروژه فقط جنبه آموزشی داشته و هیچ گونه منفعت مالی ندارد .
دانلود پروژه دریافت داده های دیجیکالا
پس از دانلود برنامه وارد مسیر اصلی شده و دستور composer install را اجرا کنید .
web scraper حرفه ای با php
لیست نظرات
سلام منی که برنامه نویسی زیاد بلد نیستم بفرمایید چطوری میشه از این استفاده کد یعنی بعد دانلود ودانلود و نصب کتابخانه و تمام اون کارا چطوری و چیکار باید بکنیم که نرم افزار اجرا بشه
سلام اگر خروجی با کیفیت میخواین و بودجه کافی دارید سفارش پروژه بدید اگر هم نه می تونید از طریق chatgpt این کار رو انجام بدید گرچه خروجی کار ضعیف خواهد بود .
مرسی از آموزش خوبتون .میشه درباره توییتر هم توضیحی بدید که چطوری میشه مثلا آخرین پست یه آیدی یا تعداد فالور و پست هاش هر چند ساعت یکبار دریافت کرد. حتما باید api توییتر داشته باشیم ( اگر آره میشه آموزشش رو بدید ) یا با curl , file_get_contents و یا web scraper و هر تابعی از این دست هم میشه .؟
درود ، شما هم می تونید از api استفاده کنید و هم می تونید از کتابخانه های مخصوص php به عنوان web scraper استفاده کنید که session رو هم در داخل خودش ذخیره می کنه و می تونید با اون اطلاعات زیادی از twitter استخراج کنید در آینده شاید در مورد یک همچین موضوعی آموزشی رو منتشر کنم .
مرسی از اموزش خوبتون. موفق باشید❤