• Bu site çerezler kullanır. Bu siteyi kullanmaya devam ederek çerez kullanımımızı kabul etmiş olursunuz. Daha fazla bilgi edin.

Php Bot Konusunda Bir Soru

Konuyu Okuyan Kişiler (0)

NepentheS

webmaster.tc
Katılım
6 Ağu 2012
Mesajlar
10
Beğeniler
0
#1
Merhaba arkadaşlar bir bot yapıyorum her şeyi tamamlandıktan sonra aklıma bir özellik daha eklemek geldi.

Şimdi bir rehber sitesi var ve tüm içeriklerini çekiyorum. buraya kadar sıkıntı yok.

Fakat tüm sayfaları çekmek istediğimde sıkıntı yaşıyorum. Çekeceğim sayfa sayısını aldım fakat devamında nasıl bir yol izleyeceğimi hala çözebilmiş değilim.

İlk önce şöyle bir şey denedim, bütün for döngüsü ile sayfa sayısı kadar döngü oluşturup, file_get_contents kısmında bu döngü değerini sayfa sayısı olarak tüm sayfaları okutmaya denedim fakat başarılı olamadım.
Bu konuda bilgisi olan var mı ?
 

inforesim

webmaster.tc
Katılım
4 Ağu 2012
Mesajlar
2,439
Beğeniler
0
#2
Mesela diyelim bir kodun var

file_get...
preg...
mysql...

bunlar tüm işlemlerini hallediyor. Diyelim 10 sayfa çekeceksin ve url de şöyle bir değişme oluyor

a.com/sayfa/10 oluyor diyelim.

PHP:
<?php
for($a="1"; $a<="10"; $a++){
file_get...
preg...
mysql...
}
Yukardaki kod şeklinde yapacaksın, $a ilede /sayfa/$a şeklinde sayfa numarasnıı belirticeksin. o 10 kere dönecek içinde.
 

NepentheS

webmaster.tc
Katılım
6 Ağu 2012
Mesajlar
10
Beğeniler
0
#3
Mesela diyelim bir kodun var

file_get...
preg...
mysql...

bunlar tüm işlemlerini hallediyor. Diyelim 10 sayfa çekeceksin ve url de şöyle bir değişme oluyor

a.com/sayfa/10 oluyor diyelim.

PHP:
<?php
for($a="1"; $a<="10"; $a++){
file_get...
preg...
mysql...
}
Yukardaki kod şeklinde yapacaksın, $a ilede /sayfa/$a şeklinde sayfa numarasnıı belirticeksin. o 10 kere dönecek içinde.

Usta aslında bunun aynısını yapıyorum fakat sonuca ulaşamadım.
php kodum şu şekilde.

PHP:
<?php
$toplam = count($sayi[0]);
$sayfalar = $toplam+1;
for($i=0;$i<=$sayfalar;$i++) {
$alt3baglan = file_get_contents("http://site.com/tr/".$link."&CurrentPage=".$i."");
preg_match_all('@<span class="td-2"><a href="(.*?)" class="siyahlink">(.*?)</span>@si',$alt3baglan,$s);
						  $sLink = $s[1];
						$sAdi = $s[2];
						
?>
<div id="firmalar">
<ul>
<?php

for($i=0;$i<count($sLink);$i++) {
echo '<li><span><strong>'.iconv("ISO-8859-9","UTF-8",$sAdi[$i]).'</strong></span><a href="'.$sLink[$i].'">Firma Bilgileri</a></li>';
}
}
 ?>

</ul>
</div>

<?php
 

inforesim

webmaster.tc
Katılım
4 Ağu 2012
Mesajlar
2,439
Beğeniler
0
#4
Usta aslında bunun aynısını yapıyorum fakat sonuca ulaşamadım.
php kodum şu şekilde.

PHP:
<?php
$toplam = count($sayi[0]);
$sayfalar = $toplam+1;
for($i=0;$i<=$sayfalar;$i++) {
$alt3baglan = file_get_contents("http://site.com/tr/".$link."&CurrentPage=".$i."");
preg_match_all('@<span class="td-2"><a href="(.*?)" class="siyahlink">(.*?)</span>@si',$alt3baglan,$s);
						  $sLink = $s[1];
						$sAdi = $s[2];
						
?>
<div id="firmalar">
<ul>
<?php

for($i=0;$i<count($sLink);$i++) {
echo '<li><span><strong>'.iconv("ISO-8859-9","UTF-8",$sAdi[$i]).'</strong></span><a href="'.$sLink[$i].'">Firma Bilgileri</a></li>';
}
}
 ?>

</ul>
</div>

<?php
alt3baglan echo yaptır, Bakalım sayfa değişiyormu
 

NepentheS

webmaster.tc
Katılım
6 Ağu 2012
Mesajlar
10
Beğeniler
0
#5
alt3baglan echo yaptır, Bakalım sayfa değişiyormu
Evet usta 2 sayfa içerik var 2 sayfa şeklinde getirdi onlarıda.
Şimdi sorun şu galiba.

Ben sayfa sayılarını for döngüsü içinde gösterip, sayfaları çekiyorum fakat, bu sayfa içerisinde olan liste halindeki verilere erişmek içinde bir tane daha for döngüsü gerekiyor, o verilerin toplamı kadar kadar bir tane daha for oluşturuyorum hepsini çekmek için. Tek sayfa çektiğimde sıkıntı yok ama, ilk for döngüsünün içine aldığımda sıkıntı oluyor hepsini çekmiyor. O for döngüsünü yaptığım zamanda sonsuz döngü oluşuyor. Benim takıldığım yer burası.
 

inforesim

webmaster.tc
Katılım
4 Ağu 2012
Mesajlar
2,439
Beğeniler
0
#6
Evet usta 2 sayfa içerik var 2 sayfa şeklinde getirdi onlarıda.
Şimdi sorun şu galiba.

Ben sayfa sayılarını for döngüsü içinde gösterip, sayfaları çekiyorum fakat, bu sayfa içerisinde olan liste halindeki verilere erişmek içinde bir tane daha for döngüsü gerekiyor, o verilerin toplamı kadar kadar bir tane daha for oluşturuyorum hepsini çekmek için. Tek sayfa çektiğimde sıkıntı yok ama, ilk for döngüsünün içine aldığımda sıkıntı oluyor hepsini çekmiyor. O for döngüsünü yaptığım zamanda sonsuz döngü oluşuyor. Benim takıldığım yer burası.
2 for dada, $i kullanmışsın. Onları değiştir. birinde $a olsun mesela birinde $b olsun büyük ihtimal çakışıyor.
 

NepentheS

webmaster.tc
Katılım
6 Ağu 2012
Mesajlar
10
Beğeniler
0
#7
2 for dada, $i kullanmışsın. Onları değiştir. birinde $a olsun mesela birinde $b olsun büyük ihtimal çakışıyor.
Sağol usta çok teşekkür ederim. Biraz fazla olacak ama ilginç bir sıkıntı daha var.

Veriyi çektiğim site sayfalama yaparken,
1 2 3 4 5 6 7 8 9 ..... 20 şöyle bir sistem yapmış yani sonraki linkine tıklandıktan sonra diğerlerini açıyor, bunu nasıl halledebilirim bir bilginiz var mı acaba ?
 

NepentheS

webmaster.tc
Katılım
6 Ağu 2012
Mesajlar
10
Beğeniler
0
#8
2 for dada, $i kullanmışsın. Onları değiştir. birinde $a olsun mesela birinde $b olsun büyük ihtimal çakışıyor.
Evet usta sıkıntı bundanmış teşekkürler.

Fakat ufak bir sorun daha var ve bunu nasıl çözeceğim bilmiyorum :).

Şimdi sitede ki sayfalama yapısı 1 2 3 4 5 6 ...... 20 şeklinde yani en son son sayfayı gösteriyor. Bunu regex ile nasıl alabiliriz ?
 

inforesim

webmaster.tc
Katılım
4 Ağu 2012
Mesajlar
2,439
Beğeniler
0
#9
Evet usta sıkıntı bundanmış teşekkürler.

Fakat ufak bir sorun daha var ve bunu nasıl çözeceğim bilmiyorum :).

Şimdi sitede ki sayfalama yapısı 1 2 3 4 5 6 ...... 20 şeklinde yani en son son sayfayı gösteriyor. Bunu regex ile nasıl alabiliriz ?
Sen örnek sayfa sayısını 1000 yap. Her sayfada belirli adet içeirk vardır. Diyelim 10 tane var ya her sayfada

PHP:
if($sayi>='10'){

}else{
exit();
}
Tarzı bir kod yaz. Çektiğin o anki sayfada, 10 dan az içerik varsa sayfayı bitirsin exit yapsın kapatsın. Bu sayede son sayfaya gelince durur.
 

NepentheS

webmaster.tc
Katılım
6 Ağu 2012
Mesajlar
10
Beğeniler
0
#10
2 for dada, $i kullanmışsın. Onları değiştir. birinde $a olsun mesela birinde $b olsun büyük ihtimal çakışıyor.
Evet sıkıntı oradaymış teşekkür ederim.
Şöyle de bir durum var :)
Veriyi çektiğim site sayfalama yaparken,
1 2 3 4 5 6 7 8 9 ..... 20 şöyle bir sistem yapmış yani sonraki linkine tıklandıktan sonra diğerlerini açıyor, bunu nasıl halledebilirim bir bilginiz var mı acaba ?