lostyazilim
tr.link

URL'leri çekmek

7 Mesajlar 1.163 Okunma
lstbozum
tr.link

Disco Disco WM Aracı Kullanıcı
  • Üyelik 17.02.2017
  • Yaş/Cinsiyet 25 / E
  • Meslek Öğrenci
  • Konum İstanbul Anadolu
  • Ad Soyad S** S**
  • Mesajlar 435
  • Beğeniler 280 / 131
  • Ticaret 12, (%92)
Merhaba Aşağıdaki HTML sitesinde bulunan a href kısmının içerisindeki url'i çekmeye çalışıyorum fakat çekemedim. Sayfa adları geliyor basınca linklere de götürüyor fakat yeni metin belgesi olarak kaydetmek istiyorum sadece a hrefleri çekebilirsem bunu yapacağım fakat aşağıda maksimum en az çekebildiğim alan bulunmakta :(


Çekmeye çalıştığım pattern şu şekilde ;

$pattern = '@
(.*?)
@si';

Array
(
[0] =>


 

 

wmaraci
reklam

Escalous Escalous Üyeliği Durdurulmuş Banlı Kullanıcı
  • Üyelik 09.08.2018
  • Yaş/Cinsiyet 24 / E
  • Meslek (.*?)
  • Konum Diğer
  • Ad Soyad A** Ş**
  • Mesajlar 1392
  • Beğeniler 421 / 799
  • Ticaret 4, (%100)
@(.*?)@si

Deneyin birde

Edit: minimum dize olduğunu yeni farkettim.. birtane komutla diğer kısımları silmeyi deneyebilirsin, şuan aklıma gelmedi
BarisYILMAZ

kişi bu mesajı beğendi.

Disco Disco WM Aracı Kullanıcı
  • Üyelik 17.02.2017
  • Yaş/Cinsiyet 25 / E
  • Meslek Öğrenci
  • Konum İstanbul Anadolu
  • Ad Soyad S** S**
  • Mesajlar 435
  • Beğeniler 280 / 131
  • Ticaret 12, (%92)

Escalous adlı üyeden alıntı

@(.*?)@si

Deneyin birde

Edit: minimum dize olduğunu yeni farkettim.. birtane komutla diğer kısımları silmeyi deneyebilirsin, şuan aklıma gelmedi


çok teşekkür ederim cevabınız için fakat olmadı. O komutu hatırlayabildiniz mi acaba? inanıyorum ki o komut işime yarayacak :(
 

 

AtakanAtes AtakanAtes 1881 - 193∞, özlemle...
  • Üyelik 05.06.2011
  • Yaş/Cinsiyet 30 / E
  • Meslek Yazılım Tek.
  • Konum Ankara
  • Ad Soyad A** A**
  • Mesajlar 2867
  • Beğeniler 54 / 747
  • Ticaret 25, (%100)
Selamlar, sizin için örnek bir uygulama oluşturdum belki fikir verebilir.

// Verdiğiniz örnekteki html çıktısı
$veri = '
  • sayfa1
  • sayfa2
  • sayfa3
  • ';

    //sadece bulunan linkleri seçiyorum.
    preg_match_all('@href="(.*?)"@si',$veri,$sonuc);

    //basit bir for döngüsü oluşturarak bulunan linkleri alıyorum.
    for ($i = 0; $i < count($sonuc[1]); $i++) {
    echo $sonuc[1][$i]."
    ";
    }


    Alınan sonuçları txt dosyasına yazdırmak istemişsiniz, o zaman for döngüsünü şu şekilde düzenleyebiliriz:

    for ($i = 0; $i < count($sonuc[1]); $i++) {
    echo $sonuc[1][$i]."
    ";

    $dosya = fopen("linkler.txt","a");
    fwrite($dosya,$sonuc[1][$i]."\n");
    fclose($dosya);
    }


    PHP dosyasının bulunduğu bölüme linkler.txt adında dosya oluşturmanız yeter. Sunucu üzerine kullanım sağlayacaksanız sorun yaşamamak için CHMOD 777 yapın.

    Örnek uygulama dosyasını buradan indirebilirsin.
Disco Escalous

kişi bu mesajı beğendi.

wmaraci
wmaraci

Disco Disco WM Aracı Kullanıcı
  • Üyelik 17.02.2017
  • Yaş/Cinsiyet 25 / E
  • Meslek Öğrenci
  • Konum İstanbul Anadolu
  • Ad Soyad S** S**
  • Mesajlar 435
  • Beğeniler 280 / 131
  • Ticaret 12, (%92)
atakanates

Çok teşekkür ederim çok işime yaradı. Fakat bazı hrefleri bu sayfadan çıkarmak exclude etmek istiyorum bunun için ne kullanabilirim? Örneğin

href="/sayfa4"
href="/sayfa99"

Teşekkür ederim
 

 

BarisYILMAZ BarisYILMAZ WM Seo Tool Kullanıcı
  • Üyelik 09.04.2015
  • Yaş/Cinsiyet 41 / E
  • Meslek Bilgisayar Teknik Servis
  • Konum İstanbul Avrupa
  • Ad Soyad B** Y**
  • Mesajlar 394
  • Beğeniler 207 / 132
  • Ticaret 5, (%100)
Biri regex mi dedi :D
https://regex101.com/r/GVDrpH/1
 

 

AtakanAtes AtakanAtes 1881 - 193∞, özlemle...
  • Üyelik 05.06.2011
  • Yaş/Cinsiyet 30 / E
  • Meslek Yazılım Tek.
  • Konum Ankara
  • Ad Soyad A** A**
  • Mesajlar 2867
  • Beğeniler 54 / 747
  • Ticaret 25, (%100)
Gelen bağlantıların yapısı ne şekilde bilmiyorum örneğin "/sayfa1, /sayfa2, /sayfa3..." gibiyse for döngüsü içerisinde bir şart oluşturman gerekir.
if (!strstr($sonuc[1][$i], "YASAKLANACAK_ID")) : // eğer yasaklanan id değer içerisinde yoksa çalışacak kod
endif;


Sizin örneğinize göre şu şekilde kullanılabilir:
preg_match_all('@href="(.*?)"@si',$veri,$sonuc);

for ($i = 0; $i < count($sonuc[1]); $i++) {

if (!strstr($sonuc[1][$i], "2")) {

echo $sonuc[1][$i]."
";

$dosya = fopen("linkler.txt","a");
fwrite($dosya,$sonuc[1][$i]."\n");
fclose($dosya); }

}


Bu örnekte kontrol edilecek id değerine 2 yazdım. Yani /sayfa2 değerini atladık sadece /sayfa1 ve /sayfa3 alındı. Daha farklı kullanımları da mevcut, toplu kontroller için in_Array fonkisyonunu araştırabilirsiniz.
Escalous

kişi bu mesajı beğendi.