Excel İle Veri Çekememe

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    SüperSperm.
    evsiz
    evsiz's avatar
    Kayıt Tarihi: 10/Mart/2009
    Erkek

    Merhaba arkadaşlar.

    Bir web sitesinden veri çekmem gerekiyor tek tek girip oradaki verileri almaya çalıştım ilk denemem de çok uzun sürdü bütün gün baktım kolay yolu var mı youtube'da bir video da izledim gayet güzel anlatmıştı video'yu çeken kişi.

    Lakin şöyle bir problem yaşıyorum

     

    Function tel_no_al(Bolge As Range)

    On Error Resume Next

    Dim dizi() As String

    Dim hucre As Range

    Dim adet As Integer

    adet = 0

    For Each hucre In Bolge

    If hucre.Value Like "*2*" Then

    adet = adet + 1

    ReDim Preserve dizi(1 To adet)

    dizi(adet) = hucre.Value

    End If

    Next hucre

    tel_no_al = dizi(1)

    For i = 2 To UBound(dizi)

    tel_no_al = tel_no_al & " ; " & dizi(i)

    Next i

     

    End Function

     

     

    If hucre.Value Like "*2*" Then

    Yazan yere ikinci bir parametre eklemek istiyorum o da "." nokta. Yani hem 2'yi bulsun hemde noktayı bulsun istiyorum. Bunu ekleyemesem bile amacım Excel sayfasında 123. ve 133. satırlarda ki verileri almak. Aslında sadece 123. ve 133. satırları da alsam olur ama bu konuda ki tek bilgim hiçbirşey bilmediğim kesinlikle yazılım ile ilgili tek bir bilgim yok sadece ben o verileri çekmek istiyorum bu konu ile de ilgili bir bilgim olmayınca bu kadar oldu. Belki olayı zorlaştırıyorumdur aslında onu da bilmiyorum.

    Bu konuda yardımcı olabilirseniz sevinirim.

    Not: Veri çekmek istediğim site halka açık bir site sadece oradaki adres ve telefon numaralarını almak istiyorum olay bu.

     


    Bazı İnsanLar AnıLarıyLa AnıLıR Bazı İnsanLar AnaLarıyLa...
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    yolbulucu
    yolbulucu's avatar
    Kayıt Tarihi: 06/Nisan/2007
    Homo

    hocam excel olmak zorunda değilse google sheet ile yapmaya çalışmanı öneririm

    hem dili daha kolay hem de google sunucularında çalışıyor, ayarlıyosun belli saatlerde çalışıyo vs gibig üzellikleri var.


    29.99cm, titanyum kaplamalı, çift damarlı, su ve yağ soğutmalı.
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    cukurova
    cukurova's avatar
    Kayıt Tarihi: 21/Aralık/2003
    Erkek

    Sorunun cevabı; örneğin içinde 5 geçenleride aratacaksın, if cümlesini aşağıdaki gibi değiştir.

    If hucre.Value Like "*2*" And hucre.Value Like "*5*" Then

    Fakat zor bir yoldan yapıyorsun. Buna arguman ekleyerek, kod içine sayı yazmak yerine formülde sayı değerini belirterek yapabilirsin. ör:/ =tel_no_al(A2;2;5) gibi

    Yazılımcı değilim demişsin ama bu tür web sayfasından doğrudan veri çekmek için en kolay ve hızlı yolu; Python + BeautifulSoup modülü. Başlamak için güzel ve kolay.

    _____________________________________________________________________________________________________________________

    Edit : vbs görünce duramadım, anılarım depreşti. Al modifiye edilmiş hali, (koda dokunmadan doğrudan formul içinde arayacağın değeri belirtebilirsin)

    A2:B29 matrixde sadece 2 olanları aramak için =TelNoAl(A2:B29;2)
    A2:B29 matrixde 2 ve 5 olanları aramak için =TelNoAl(A2:B29;2;5)
    A:B matrixde 2 ve . olanlar =TelNoAl(A:B;2;".")

    Function TelNoAl(Bolge As Range, arg1 As String, Optional ByRef arg2 As Variant)
    
    Dim dizi() As String
    Dim hucre As Range
    Dim adet As Integer
    adet = 0
    For Each hucre In Bolge
    	If IsMissing(arg2) = False Then
    		If InStr(hucre.Value, arg1) > 0 And InStr(hucre.Value, arg2) > 0 Then
    			adet = adet + 1
    			ReDim Preserve dizi(1 To adet)
    			dizi(adet) = hucre.Value
    		End If
    	Else
    		If InStr(hucre.Value, arg1) > 0 Then
    			adet = adet + 1
    			ReDim Preserve dizi(1 To adet)
    			dizi(adet) = hucre.Value
    		End If
    	End If
    Next hucre
    TelNoAl = dizi(1)
    For i = 2 To UBound(dizi)
    	TelNoAl = TelNoAl & " ; " & dizi(i)
    Next i
    
    End Function

     

    cukurova tarafından 28/Mar/21 03:35 tarihinde düzenlenmiştir
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    SüperSperm.
    evsiz
    evsiz's avatar
    Kayıt Tarihi: 10/Mart/2009
    Erkek

    @cukurova 

    Hocam yardımın için öncelikle teşekkür ederim

    Fakat bendeki kodun içine bunu yerleştirdiğim zaman

    If hucre.Value Like "*2*" And hucre.Value Like "*5*" Then 

    Bu kod ile arıyorum A133'de 2 değerini al dediğimde 

    =tel_no_al(A133;2)

    olmuyor.

    Tek değer tanımladığım zaman tek sütunda istediğimi buluyorum ama 2 değer tanımlayıp 2 sütunda aradığım zaman sonucu alamıyorum.

    Ben istiyorum ki;

    If hucre.Value Like "*2*" And hucre.Value Like "*:*" Then 

    123. sütunda içinde ":" işareti olanı 133. sütunda 2 ile başlayan değeri bana versin

     

    ABC GEMİ ACENTELİĞİ NALBURİYE İNŞAAT MAKİNA MÜHENDİSLİK SANAYİ VE TİCARET LİMİTED ŞİRKETİ KOZLUK KAYSERİ NO:NO: 7/A İZMİT/KOCAELİ
    Semt
    İlçe
    İZMİT
    İl
    KOCAELİ
    Posta Kodu
    Faks
    262 3314511
    Telefon
    262 3314510

    En üstteki satır 123 en alttaki de 133

     

    Senin yazdığın kod ile de denedim

    =ADRESAL(A123:A133;2;":")

    Olarak yazıyorum bir sonuç çıkmıyor,

    lanet olsun sadece 2 olanı bul diyorum 

    =ADRESAL(A:B;2)

    0 Değerini veriyor.

    Büyük ihtimal ile ben yapamıyorum. Hepsini siktiret şununla yap diyen varsa @yolbulucu gibi onlara da açığım. Nereden baksan belki 400 link var hepsine tek tek girip adres,şirket adı ve tel no almam her biri için bile 30 saniye olsa 200 dk yapar o da bana çok geldi birde sürtünmeleri hesaba katmazsak teorik olarak o da :)


    Bazı İnsanLar AnıLarıyLa AnıLıR Bazı İnsanLar AnaLarıyLa...
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    sunyy2003
    sunyy2003's avatar
    Kayıt Tarihi: 20/Ağustos/2005
    Erkek

    Bu veri çekme işine bende çok meraklıyım ama tam anlamıyla bir çözüm bulmak zor en iyisi Python öğrenmek siteyi yszsrmsiin bir bakayim


    bu hayat biterkende aklımda hep sen olacaksın B bu dilden firar eden her söz yaydan çıkmış ok gibi (sagopa kajmer) Sago sıcak ekmek üzerine bal kaymak. "Bla bla" larını tartıda tartar bakkal aylak. Aşkın bir sabunsa köpürt beni Pentax
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    cukurova
    cukurova's avatar
    Kayıt Tarihi: 21/Aralık/2003
    Erkek
    evsiz bunu yazdı

    Ben istiyorum ki;

    If hucre.Value Like "*2*" And hucre.Value Like "*:*" Then 

    123. sütunda içinde ":" işareti olanı 133. sütunda 2 ile başlayan değeri bana versin

    Hocam anladımda, bu kodla olmaz o iş, mantığı ters;

    If hucre.Value Like "*2*" And hucre.Value Like "*:*" Then -> Bunun anlamı ; Eğer hücre içerisinde 2 VE ":" değeri varsa getir. Yani her ikiside olması lazım. Senin örnekte hücrelerin hiçbirinde ":" değeri yok, ondan getirmez.

    If hucre.Value Like "*2*" Or hucre.Value Like "*:*" Then -> Bunun anlamı ; Eğer hücre içerisinde 2 VEYA ":" değeri varsa getir. Değerlerden bir tanesi olması yeterli.

    Bu kodlarda satır ve sutun numaraları dikkate almaz, sadece hücre (cell) içerisinde arama yapar. Yani 123. yazınca, 123 satır değil, hücre içinde 123. değerini arar.

     

    Bende çalışıyor, bu ilk örnekte A ve B klonların hücreleri içinde 2 değeri olanları getir;

     

    A123 -A133 hücreleri içerisinde 2 ve 0 olanları getir. (her ikiside olmak zorunda, yoksa hata döner)

    Ama dediğim gibi senin işini bunlar çözmez, en azından aramalar için regex kullanmak gerekecek ki regex işleri çok kolaylaştırır. Bu şekilde zor senin iş.

    cukurova tarafından 28/Mar/21 21:56 tarihinde düzenlenmiştir
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    cicosz
    cicosz's avatar
    Kayıt Tarihi: 22/Ağustos/2005
    Erkek

    foksiyonla diziyle hiç uğraşma hacı.

    excelde bir sütuna verileri çekeceğin linkleri yaz,

    createObject ile internet explorer tarayıcısını oluştur,

    querySelectorAll ile hangi satırlar lazımsa alıp hücrelere yazdırabilirsin.

    web scraping ile ilgili excel örnekleri nette var sen bir bak olmadı burdan tekrar yardımlaşırız hacı

     

     

Toplam Hit: 1523 Toplam Mesaj: 7
excel formul