<?phprequire_once('Connections/sitebaglanti.php');
$sayfa = file_get_contents('https://www.r10.net/');
preg_match_all('-<a href="http://(.*?)"-', $sayfa, $cikti);
foreach ($cikti[1] as $link) {
$save = mysql_query("insert into domains (domain_name) values ('$link')");
if($save){
echo "<p style='color:green'>$link isimli link sisteme kayıt edildi";
}else{
echo "<p style='color:red'>$link isimli link sisteme kayıt edilemedi";
}
}
?> link botu yapımı
14
●1.612
- 23-10-2012, 14:28:41arkadaşlar öncelikle herkese merhaba, bir proje üzerinde çalışıyorum proje gereği web siteme bir link botu yapıyorum bot şöyle hareket edecek gönderdiğim sitede bulunan tüm harici linkleri yani https://www.r10.net sitesine botu gönderdiğim zaman http://www.ilebaşlayan.com,net,org sitelerini algılayıp veritabanıma ekleyecek şimdilik aşağıdaki gibi bir kod buldum ama veritabanıma kayıt ettiremedim acaba sorun nerede olabilir?
- 24-10-2012, 15:40:51sorunu çözdüm arkadaşlar ama bir sorum daha var acaba aşağıdaki vereceğim koda kontrol nasıl eklerim yani aynı veri varsa eklemeden bir sonraki linke gitsin bunu nasıl yaparım arkadaşlar?
$sayfa = file_get_contents('https://www.r10.net/'); preg_match_all('@http://(.*?)/@si', $sayfa, $cikti); foreach ($cikti[1] as $link) { $kayit = mysql_query("insert into domains (domain_name) values ('$link')"); if($kayit){ echo "<p style='color:green'>$link isimli link sisteme kayit edildi"; }else{ echo "<p style='color:red'>$link isimli link sisteme kayit edilemedi"; } - 24-10-2012, 21:45:41arkadaşlar şu kodda ne gibi sorun olabilir acaba? hata alıyorum sorunu file_get_contents veriyor normalde url girince sorun yok ama url yi veritabanından çekip file_get_contents kodunun içine yerleştirdiğimde şöyle hata veriyor
Warning: file_get_contents($url) [function.file-get-contents]: failed to open stream: No such file or directory in D:\wamp\www\denemeler\spider.php on line 57
buyrun kodların tamamı aşağıda
$id = $_GET['id']; $siteler = mysql_fetch_array(mysql_query("SELECT * FROM sites WHERE site_id='".mysql_real_escape_string($id)."'")); $url = $siteler['url']; $sayfa = file_get_contents('$url'); preg_match_all('@<a href="http://(.*?)/@si', $sayfa, $cikti); foreach ($cikti[1] as $link) { //Veritabanında var mı kontrol $kontrol = mysql_num_rows(mysql_query("SELECT * FROM domains WHERE domain_name='".mysql_real_escape_string($link)."'")); if ($kontrol){$sonuc="var";}else{$sonuc="yok";} if ($sonuc=="yok"){//Önceden Kayıt Yoksa $kayit = mysql_query("insert into domains (domain_name) values ('$link')"); if($kayit){ echo "<p style='color:green'>$link isimli site sisteme kayit edildi</p>"; }else{ echo "<p style='color:red'>$link isimli site sisteme kayit edilemedi</p>"; } }else{//Önceden Kayıt Varsa echo "<p style='color:red'>$link isimli site veritabanında zaten var</p>"; } } - 24-10-2012, 22:01:32teşekkür ederim ama şimdide aşağıdaki hatayı veriyor
Warning: file_get_contents() [function.file-get-contents]: Filename cannot be empty in D:\wamp\www\denemeler\spider.php on line 18
- 25-10-2012, 01:32:05saol sorunu çözdüm ama yeni bir soru sormak istiyorum
preg_match_all('@<a href="http://(.*?)/@si', $sayfa, $cikti);komutu ile web sitelerini çekiyorum ama bazı sitelerin
www.ebay.co.th" id="hpf-TH" rel="nofollow" target=
gibi devamlarınıda alıyor şöyle bir fonksiyon düşündüm acaba nasıl bulabilirim fonksiyon şöyle olacak
/ " ' &
gibi işaretlerden gerisini almayacak bunu nasıl yapabilirim acaba arkadaşlar? - 25-10-2012, 14:37:18Yanlış anlamadıysam sadece site adını almak istiyorsunuz. Sayfa linki vs. dahil olmayacak.
preg_match_all('%(<a href=["\'])(.*?)["\']%i',$a,$b); for($x=0;$x<count($b[2]);$x++){ $URI = parse_url($b[2][$x]); $Link = $URI['host']; echo $Link."<p>"; }Yukarıdaki pattern ile a etiketinin href özelliğinin içeriği alınıyor. parse_url fonksiyonu ile gelen değerden domain adını çekiyoruz.
Eğer istediğiniz sadece href özelliğinin içeriğini almak ise;
preg_match_all('%(<a href=["\'])(.*?)["\']%i',$a,$b); echo "<pre>"; print_r($b[2]); echo "</pre>"; - 25-10-2012, 15:31:02ilk kod süper oldu çok teşekkür ederim süpersin olumlu oy veremiyorum sadece satıcılar içinmiş şimdi ufak bir soru daha sormak istiyorum istersen cevap vermeyebilirsin siteler adında bir tablom var buradan siteleri id ye göreçekip sitelerdeki urlleri biraz önceki yardım ettiğiniz kodlarla domainler adında bir tabloya kayıt ediyor kayıt etme işlemi için refresh komutunu kullanıyorum 10 sn de bir sonraki id yi çekiyor yapmak istediğim id yi get ile aldığım bir kod var
$id = $_GET['id']
bu kodun altında şöyle bir sınırlama koydum
if($id!=40){bu kod id 40 olunca durduruyor ama ben bunu sitemde kaç tane site varsa yani en büyük id ye geldiğinde durmasını istiyorum bu alttaki koda nasıl bir kod eklemeliyim ki en son id ye gelince refresh dursun sınırlamayı kaldırırsam sonsuza kadar boş boş id atlar