siteadi.com/
siteadi.com/page/2
siteadi.com/page/3
siteadi.com/page/4
siteadi.com/page/5
siteadi.com/page/6 ...
bu sayfaların tümünde 10 tane yazı listelenmiş (<h2> tagı ile). ben bu 10 yazının başlıklarını ekrana yazdırmak istiyorum tek seferde.
yani forma
siteadi.com
yazdığım takdirde 10 ilk 10 sayfanın başlıklarını ekrana yazdırsın istiyorum. bunu nasıl mümkün kılarım?
Tüm sayfalardaki başlığı tek seferde çağırmak
9
●650
- 20-09-2012, 00:53:50Birkaç sefer okudum ama tam olarak anlayamadım, biraz daha açıklama yapmanız mümkün mü?
-Veriler nereden geliyor?
-Gelen verilerin formatı nedir?
-siteadresi.com yazınca nasıl bir veri çıkıyor, siteadresi.com/page/2 yazınca nasıl bir veri çıkıyor?
-Ekrana yazdırmak istediğiniz veri hangi sayfa için nasıl bir şey?
Bunlara dair bir şey anlayamadım maalesef.
- 20-09-2012, 01:26:51Sitemiz: http://www.webrazzi.com/
İlk etapta anasayfadaki başlıkları alıyoruz.
Başlıklar:
1) iOS 6 yayınlandı
2) 2012 sonunda yaklaşık her 60 kişiden biri tablet sahibi olacak
3) Google Maps işyerlerinin kapısından içeri giriyor
4) Dijital İşler’de bu hafta Harry’s Bar, Topshop ve Volkswagen’in kampanyalarını inceledik
5) Facebook yeni mobil reklam ağını test etmeye başladı
6) Urban Station Türkiye’yi ‘ofis-kafe’ kavramıyla tanıştırıyor
7) iOS 6 için hazırlıklarınızı tamamladınız mı?
8) Jenerik alan adı uzantıları markalar için neden önemli?
9) Twitter; Apple, Facebook, Google ve kendisini nasıl görüyor?
10) Tart Yeni Medya Mutfağı’ndan oyunlaştırma platformu: İşte Oyun
Şimdi
$kayit = $_POST['do']; $kaynak = file_get_contents("$kayit"); preg_match_all('@<h2><a href="(.*?)" rel="bookmark" title="(.*?)">(.*?)</a></h2>@si',$kaynak,$veri);bir form oluşturdum POST metodu ile URL adresini yazıyorum ve bana bu sitenin başlıklarını getiriyor.
Ben her sayfanın başlığını getirmek için (her sayfada 10 tane başlık var) form'a her defasında bir bağlantı yazmak zorundayım. Örnek olarak
http://www.webrazzi.com (bu ilk sayfaydı, yani, anasayfa)
ikinci sayfa
http://www.webrazzi.com/page/2/
üçüncü sayfa
http://www.webrazzi.com/page/3/
vs diye gidiyor.
Benim istediğim şey şu. Ben her defasında form kısmına
http://www.webrazzi.com/page/2/
http://www.webrazzi.com/page/3/
http://www.webrazzi.com/page/4/
http://www.webrazzi.com/page/5/
yazmak yerine tek seferde
http://www.webrazzi.com
yazayım ve bana tüm başlıkları listelesin. - 20-09-2012, 01:41:11Sanırım bot yazıyorsunuz. O zaman for döngüsü içerisine alacaksınız kodu. Yani:
<?php $sabiturl="http://www.webrazzi.com"; function kontrol($sayfa, $url) { $adres=$url.'/page/'.$i.'/'; $a = file_get_contents($adres); //buraya kontrol kodları gelecek. } for($i=1;kontrol($i);$i++) { $adres=$sabiturl.'/page/'.$i.'/'; //diğer kodlar buraya gelecek. } ?>//buraya kontrol kodları gelecek. şeklinde yazdığım kısıma kontrol ifadeleri yazılacak. Yani Eğer sayfa içeriğinde "Bulunamadı" yazıyorsa return False, başka türlü ise return True diyerek kontolümüzü oluşturacağız.
//diğer kodlar buraya gelecek. şeklinde yazılan yere ise çalışmasını istediğiniz kodları yazacaksınız.
- 20-09-2012, 01:42:38Anlaşıldı bot yapmak istiyorsun. preg_match_all ile 2-3-4 sayılarının tutulduğu html tagının bulu sadece rakamı oradan eleyeceksin bir diziye aktaracaksın.
Bir döngü oluşturup, bu dizi kadar döndüreceksin. döngü içerisinde, file_content ile veriyi çekeceksin.
preg_macth_all(<a href="".$siteurl."(.*?)">(.*?)</a>,$siteurl,sayfalar);
for ($i=0; $i<sayfalar.count; i++)
{
get_file_content($siteurl.$sayfalar[0][i]);
}
şeklinde olabilir.
Not: denemedim sadece mantık olarak anlatmaya .çalıştım syntax hatası olabilir. - 21-09-2012, 18:07:00İşime yaramadı valla yapamadım ama teşekkürler tabi kiZorbAA adlı üyeden alıntı: mesajı görüntüle