1 پست در این موضوع قرار دارد

ارسال شده در (ویرایش شده)

آموزش نوشتن خزنده وب با PHP – حالت الگوبرداری <- منبع آموزش

سطح آموزش: متوسط

برداشتن اطلاعات از صفحات موجود در وب می‌تواند به دلایل مختلفی از جمله تولید اطلاعات در مورد آن سایت (مانند الکسا)، ایجاد یک موتور جستجو (مانند گوگل) و یا کپی برداری از آن سایت باشد. متداول ترین روش دریافت اطلاعات توسط خزنده از طریق بررسی سورس HTML و یا RSS است (گاهی وقت ها دریافت از طریق API هم امکان پذیر است).

بهترین گزینه برای دریافت استفاده از RSS است (درصورت موجود بودن) چون سورس HTML ممکن است در بازه های زمانی نامعلوم تغییر پیدا کند اما RSS از یک استاندارد پیروی می کند به همین جهت تگ ها تغییر پیدا نمی کنند. روال کار یک خزنده هیچگاه ثابت نیست و نسبت به کاربرد آن متغیر است اما همه ی آنها یک ساختار مشابه دارند. دو حالت در نوشتن خزنده ها وجود دارد، یا طبق یک الگو کار می کنند و یا از طریق روش پرچم گذاری اطلاعات مورد نظر را دریافت می کنند.

حالت الگو برداری

استفاده از API برای دریافت اطلاعات بارز ترین نمونه ازخزنده هایی هستند که طبق یک الگو عمل می کنند، اما الگو برداری فقط به استفاده از API ختم نمی شود؛ به طور کلی اگر وب سایت هدف از یک روند منظم برای نمایش اطلاعات استفاده کند، حالت الگوبرداری به کار می رود.

مثلا سایت الکسا از یک الگوی منظم برای دسته بندی وب سایت ها استفاده می کند، مثال زیر فرمول دستیابی به وبسایت های برتر ایران است.

http://www.alexa.com/topsites/countries;page_number/IR

یافتن الگو به کاربرد خزنده وابسته است، به عنوان مثال من باتوجه به ویژگی های این الگو میخواهم اطلاعات 25 وب سایت برتر ایران را به دست آورم.

پارامتر PAGE_NUMBER بیانگر شماره صفحه است که از 0 تا n عدد ادامه دارد (منظور از n شماره آخرین صفحه است). در هر صفحه اطلاعات 25 وب سایت لیست می شوند. طبق این اطلاعات؛ آدرس زیر 25 وب سایت برتر ایران را نشان می دهد.

http://www.alexa.com/topsites/countries;0/IR

در مرحله بعدی با استفاده از xPath اطلاعات را از سورس html استخراج و فهرست بندی می کنیم.


<?php
$url = "http://www.alexa.com/topsites/countries;0/IR";
$html = file_get_contents($url);
libxml_use_internal_errors(true); // Yeah if you are so worried about using @ with warnings
$doc = new DomDocument();
$doc->loadHTML($html);
$xpath = new DOMXPath($doc);
$sites = $xpath->query('//*/li[@class="site-listing"]');
$domains = array();
foreach ($sites as $site) {
$rank = $xpath->query('./div[@class="count"]', $site)->item(0)->nodeValue;
$link = $xpath->query('./div/p[@class="desc-paragraph"]/a', $site);
$domains[] = array(
'rank' => $rank,
'name' => $link->item(0)->nodeValue,
'domain' => $link->item(0)->getAttribute('href'),
);
}
print_r($domains);
?>

نکته: فهرست بندی یکی از مراحل ثابت در ایجاد یک خزنده است، به طور کلی چه اطلاعات برای کاربر نمایش داده شوند و چه از خزنده به عنوان واسطه استفاده شود باید اطلاعات را فهرست بندی کرد تا قابل فهم باشد. همچنین یک خزنده می تواند به عنوان یک جاسوس عمل کند بنابراین فهرست بندی اطلاعات برای “هکر” (کرکر) در اولویت قرار دارد.

در مثال فوق این قطعه کد اطلاعات را فهرست می کند.

$domains[] = array( 'rank' => $rank, 'name' => $link->item(0)->nodeValue, 'domain' => $link->item(0)->getAttribute('href'), );

کلید اصلی در انتخاب حالت الگوبرداری چیست؟

برای مشخص کردن حالت دریافت اطلاعات باید به سرنخ ها توجه کنید (که در حالت الگوبرداری همیشه سرنخ ها مشابه هستند) مثلا شماره صفحات (در سایت الکسا) و شناسه مطلب (در سایت IMDB) یکتا هستند، یا به عبارت دیگر دارای یک الگوی ثابت هستند که با کمک آنها می شود اطلاعات را دریافت کرد.

درآموزش بعدی نحوه نوشتن خزنده وب در حالت بدون الگو (پرچم گذاری) را توضیح می دهم. البته در حالت بدون الگو دست برنامه نویس باز است و پرچم گذاری نامی است که من به دلیل نحوه کار این روش برای آن انتخاب کرده ام. این روش نسبتا پیچیده است و درمقایسه با حالت الگوبرداری، سرنخ های مشابه کمتر است. پس خودتان را برای شیرجه زدن در کد های PHP آماده کنید :)

منبع آموزش

ویرایش شده در توسط محمد اعظمی
2

به اشتراک گذاری این پست


لینک به پست

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری

  • مطالب مشابه

    • توسط naderi
      سلام .. برای توسعه یک وب سایت با قالب Eduma وردپرس میخوایم یه سری قابلیت ها رو بهش اضافه کنیم .. از دوستان کسی هست که بتونه به ما کمک کنه؟
    • توسط s.m.a1383
      سلام می خواستم ببینم به جای اینکه محصولات رو توی صفحه اول سایت بگذارم میشه دسته های محصولات رو توی صفحه اول سایت گذاشت؟
      آدرس سایت من:innolabs.ir
      در ضمن از پوسته "هستیا "استفاده میکنم افزونه یا کدی هست که بتونه به جای نمایش محصولات در صفحه اول دسته های محصولات رو نمایش بده در ضمن هر کد یا افزونه ای که گفتید طریقه انجامش رو هم بگید لطفا.
      خیلی ممنون از لطفتون
    • توسط resanehwp
      دوستانی که می خوان قلاب های ووکامرس و ترتیب اجرای اونها رو یاد بگیرن
      در لینک زیر صفحه آرشیو محصولات رو می تونید بررسی کنید
      http://bit.ly/rhwp1006
    • توسط centralfile
      سلام دوستان من افزونه wp original media path رو نصب کردم تنظمات مربوطه رو انجام دادم.
      یک ساب دامنه برای سایت ایجاد کردم.
      فایل های مربوط به پوشه uploads/wp-content رو هم به ساب دامنه انتقال دادم  اما عکس ها و فایل ها هنوز تو سایت لود نشده.
      پیوند های یکتا رو هم بروز رسانی کردم ولی  مشکلی حل نشد!
      ساب دامنه ایجاد شده و فایل ها داخلش قرار گرفتند
      اینم اسکرین شات از تنظیمات افزونه
       
       
       
       
       
      ممنون میشم کمک کنید.



    • توسط p1touchbiz
      دراین مقاله سعی داریم که تعریف درست از دسته بندی در وردپرس و برچسب گذاری در وردپرس را داشته باشیم .  درسایت های وردپرسی این دو مفهوم بسیار به یکدیگر شبیه می باشند و در بسیاری موارد باهم دیگر اشتباه میشود .  درمجموع هردو این ها وظیفه اول و اصلیشان کمک به ایجاد یک سایت منظم و گویا برای مخاطب می باشد و به طور مستقیم روی سئوی سایت شما تاثیر ندارند .
      دسته بندی در وردپرس چیست ؟
      موضوعات اصلی سایت در دسته بندی ها جای میگیرد .
      مثلا مطالب سایت شما صرفا در مورد آشپزی و پزشکی میباشد .  پس سایت شما دو دسته اصلی دارد و میتواند زیر دسته های دیگری هم در هرکدام از این دسته های اصلی جای بگیرد .
      مثلا در دسته اصلی آشپزی چند زیر دسته ی دیگر میتواند وجود داشته باشد مانند فست فود ها ، دسر ها ، پیش غذاها و غیره.
      و شما میتوانید برای هردسته زیر دسته های دیگری درست کنید . و البته با تشکیل هردسته میتوانید مادر آن دسته را نیز مشخص کنید .
      اگر هر دو یا سه روز یکبار در مورد یک موضوع خاص نوشته ایجاد میکنید و تعداد قابل توجهی از نوشته های سایت شما مربوط به آن موضوع میشود برای آن موضوع باید دسته بندی ایجاد کنیم .
      برای ایجاد دسته بندی در پنل وردپرس سایت خود درستون سمت راست درقسمت نوشته ها میتوانید روی دسته ها کلیک کنید .
       
       

       
       
      برچسب گذاری در وردپرس چیست ؟
      برای برچسب گذاری در وردپرس زمانی که پیرامون یک موضوع جزیی تر مطالبی دارید و تعداد این مطالب آنقدر زیاد نیست و البته خود آن موضوع فرعی و آنقدر کلی نباشد که بخواهید برای آن دسته تشکیل بدهید میتوانید یک برچسب مشترک برای آن مطالب ایجاد کنید .
      به عنوان مثال در دسته بندی آشپزی شما چند نوشته پیرامون فواید و خواص سبزی ایجاد کرده اید و برچسب فواید میوه و سبزی را برای آن گذاشته اید .
      حالا شخصی که روی این برچسب کلیک کند میتواند تمامی نوشته هایی که این مضمون را درخود دارند و مربط به آن میباشد را مشاهده کند .
      به طور کلی اگر بیشتر از ۵ تا ۱۰ نوشته پیرامون یک مطلب ارسال کرده اید برای آن برچسب جداگانه تشکیل دهید .
      امیدوارم این مقاله به شما کمک کرده باشد و ممنون میشم اگه نظرات خودتون را پایین مقاله برای ما ارسال کنید .
       
      آموزش ویدئویی وردپرس در ۳ روز را اینجا ببینید .
      برای آنالیز سئو سایت خود اینجا کلیک کنید .