PHP da havolalar bo‘yicha pars qilish
Keling, endi ko‘p sahifali saytlarni qanday pars qilishni ko‘rib chiqaylik. Boshlash uchun eng oddiy variantni sinab ko‘ramiz, bunda asosiy sahifada boshqa sahifalarga olib boradigan havolalar menyusi mavjud. Bizning holatda bu menyu quyidagicha ko‘rinsin:
<nav>
<a href="http://targ.loc/1.html">1</a>
<a href="http://targ.loc/2.html">2</a>
<a href="http://targ.loc/3.html">3</a>
<a href="http://targ.loc/4.html">4</a>
<a href="http://targ.loc/5.html">5</a>
</nav>
Menyu olib boradigan har bir sahifa quyidagicha ko‘rinsin:
<main>
text1
</main>
Faraz qilaylik, biz pars qilishni saytning asosiy sahifasidan boshlaymiz:
<?php
$start = 'http://targ.loc/';
?>
Asosiy sahifa matnini olamiz:
<?php
$main = getPage($start);
?>
Menyu havolalarini olamiz:
<?php
$hrefs = getHrefs($main, 'nav a');
?>
Endi tsikl yordamida havolalarni aylanib chiqamiz va kerakli barcha sahifalarni pars qilamiz:
<?php
foreach ($hrefs as $href) {
$text = getPage($href);
var_dump($text);
}
?>
Saytni targ1.zip havolasidan yuklab oling
va o‘zingizda ishga tushiring. Parser yozing,
u asosiy sahifaga kiradi,
menyudan barcha havolalarni oladi,
havolalar bo‘yicha barcha sahifalarni ochadi
va title
va main teglarining tarkibini oladi.
Oldingi vazifani o‘zgartiring, shunda sahifa sarlavhalari va matnlari ma’lumotlar bazasiga saqlansin.