bilamir
New member
- Katılım
- 28 Ağu 2008
- Mesajlar
- 11
- Reaction score
- 0
- Puanları
- 0
Arkadaşlar öncelikle spider mantığını açıklamaya çalışayım; Bir spider sizin belirttiğiniz bir başlangıç noktasından (web adresi) başlar ve bütün linkleri dolaşarak tüm net üzerinde dolaşır, arama motorları için veritabanı oluşturmak için spiderlar kullanılır, bir spider web sayfasını tarar sayfanın içeriğini barındırdığı linkleri alır ve veritabanına kaydeder ve kullanıcı arama motorundan arama yaptığında veritabanındaki bu bilgilere bakar ve karşılığını getirir, başlangıç olarak bir web sayfasının içeriğini almayı ve bunu bir string değişkeninin içine kaydetmeye bakalım
bu kodu aldık peki bu kod ne işimize yarayacak?
spider bu kod içinde arama motorunun neyi istediğine göre yani ya meta taglara yada sitenin komple içeriğine bakar, içindeki linkler bulur ve bunları veritabanına kaydeder, peki bunları nasıl bulur? işte burda devreye regular expressionlar giriyor regular expressionlardan Regular Expression kısmında bahsetmiştim;
yazdığımız regular expressionlarla bunları alıp kırpıp istediğimiz veriye ulaştıktan sonra ahanda bir arama motorumuz olmuş oldu ancak internet üzerinde milyarlarca web sayfası olduğundan bu tarama işlemi çok çok uzun bir zaman alacağından biraz sabırlı olmalısınız tabe yeterince büyük bir veritabanınada sahip olmanız gerekir yani epey bir maliyetli olacak bu çalışma aşağıda internet üzerinde araştırma yaparken bulduğum bir kaynak kodunu sunuyorum sizlere bu bir örümcek programıdır ve çalıştırmak içinde yeni olan arkadaşlar için yazıyorum hemen kızmayın dos altında php kurulu olan dizinin içine girin ve php spider.php yazıp entera basın şu şekilde bir çıktı olacak;
bir arama motoru yapmak işte bu kadar kolay :durdurun ama maliyet açısındanda oldukça külfetli olduğundan biraz zaman alıyor yapmak
konuyu yanlış yere açmışım ama değiştirmeyi bulamadım yardımcı olurmusunuz?
Kod:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-9">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1254">
<title> - Madyes.Net - TURK Arama Motoru - Turkish Search Engine</title>
<meta http-equiv="Content-Language" content="tr">
<meta name="robots" content="ALL">
<meta name="description" content="Turkce ve yabanci icerikli siteler, Arama ve İndeksleme Motoru">
<meta name="keywords" content= "">
<style type="text/css">
<!--
body,td,th {
font-weight:bold;
font-family:Verdana; color:#FF0000;
font-size:12px;
}
body {
background-color: #FFFFFF;
}
#x {
font-family:Verdana; color:#FF0000;
font-size:10px;
border-style:solid;
border-color:#FF0000;
}
a:link {
color: #0000FF;
}
a:visited {
color: #9696ff;
}
a:hover {
color: #9696ff;
}
a:active {
color: #9696ff;
}
.style1 {
font-size: 18px;
font-family: Verdana;
color: #0000FF;
}
-->
</style></head>
<body>
<table border=0 id="tablo" width="800" align="center">
<tr>
<td ><table border=0 width="800">
<tr>
<td height="70">
<img align=left src="/images/madyes.jpg">
<span class="style1">Madyes.Net</span><br>
<form method="post" action="ara.php">
<br><br><br><br><br><br><center><input id="x" size="60" type="text" name="ara"> <input id="x" type="submit" value="Ara"></center>
</form>
</td>
</tr>
<tr>
<td>
</td>
</tr>
</table></td>
</tr>
</table>
<table border =0 align="center" width="800">
<tr>
<td align="right">
</td>
</tr>
</table>
</body>
</html>
bu kodu aldık peki bu kod ne işimize yarayacak?
spider bu kod içinde arama motorunun neyi istediğine göre yani ya meta taglara yada sitenin komple içeriğine bakar, içindeki linkler bulur ve bunları veritabanına kaydeder, peki bunları nasıl bulur? işte burda devreye regular expressionlar giriyor regular expressionlardan Regular Expression kısmında bahsetmiştim;
yazdığımız regular expressionlarla bunları alıp kırpıp istediğimiz veriye ulaştıktan sonra ahanda bir arama motorumuz olmuş oldu ancak internet üzerinde milyarlarca web sayfası olduğundan bu tarama işlemi çok çok uzun bir zaman alacağından biraz sabırlı olmalısınız tabe yeterince büyük bir veritabanınada sahip olmanız gerekir yani epey bir maliyetli olacak bu çalışma aşağıda internet üzerinde araştırma yaparken bulduğum bir kaynak kodunu sunuyorum sizlere bu bir örümcek programıdır ve çalıştırmak içinde yeni olan arkadaşlar için yazıyorum hemen kızmayın dos altında php kurulu olan dizinin içine girin ve php spider.php yazıp entera basın şu şekilde bir çıktı olacak;
PHP:
<?
function InternetCombineUrl($absolute, $relative) {
$p = parse_url($relative);
if($p["scheme"])return $relative;
extract(parse_url($absolute));
$path = dirname($path);
if($relative{0} == '/') {
$cparts = array_filter(explode("/", $relative));
}
else {
$aparts = array_filter(explode("/", $path));
$rparts = array_filter(explode("/", $relative));
$cparts = array_merge($aparts, $rparts);
foreach($cparts as $i => $part) {
if($part == '.') {
$cparts[$i] = null;
}
if($part == '..') {
$cparts[$i - 1] = null;
$cparts[$i] = null;
}
}
$cparts = array_filter($cparts);
}
$path = implode("/", $cparts);
$url = "";
if($scheme) {
$url = "$scheme://";
}
if($user) {
$url .= "$user";
if($pass) {
$url .= ":$pass";
}
$url .= "@";
}
if($host) {
$url .= "$host/";
}
$url .= $path;
return $url;
}
$readUrls = array();
function spider($baseUrl)
{
global $readUrls;
if($readUrls[$baseUrl]) return;
$cevap = implode('', file($baseUrl));
$readUrls[$baseUrl] = 1;
echo $baseUrl."\n";
preg_match_all("|href=\"(.*)\"|U", $cevap, $linkler, PREG_PATTERN_ORDER);
$linkler = $linkler[1];
for($i=0; $i<count($linkler); $i++)
{
$linkler[$i] = InternetCombineUrl($baseUrl, $linkler[$i]);
spider($linkler[$i]);
}
}
// burada spider'ımızın başlangıç adresini yazalım:
spider("http://www.madyes.net/");
?>
bir arama motoru yapmak işte bu kadar kolay :durdurun ama maliyet açısındanda oldukça külfetli olduğundan biraz zaman alıyor yapmak
konuyu yanlış yere açmışım ama değiştirmeyi bulamadım yardımcı olurmusunuz?