Güncel Market Fiyatları İnternetten Bulmak

Katılım
20 Ocak 2005
Mesajlar
526
Excel Vers. ve Dili
Excel 2007 Türkçe
Altın Üyelik Bitiş Tarihi
01-01-2024
Sub imece1()
' Haluk - 08/03/2023

Dim objHTTP As Object, strURL As String
Dim HTML As Object, Tables As Object, Table As Object
Dim x As Integer, i As Long, iRow As Long

Range("A1:B" & Rows.Count).ClearContents
Range("A1:B1") = Array("Ürün", "Fiyat")

Set objHTTP = CreateObject("MSXML2.XMLHTTP")
strURL = "https://www.imecemarket.com/meyve-sebze?limit=200"

objHTTP.Open "GET", strURL, False
objHTTP.send

Set HTML = CreateObject("HTMLFILE")
HTML.body.innerHTML = objHTTP.responseText

Set Divs = HTML.getElementsByTagName("div")

For x = 0 To Divs.Length - 1
If Divs(x).classname = "product-item-container" Then
iRow = iRow + 1
Cells(iRow + 1, 1) = Divs(x).getElementsByTagName("a")(0).Title
End If
If Divs(x).classname = "price" Then
Cells(iRow + 1, 2) = Split(Divs(x).innerText, " ")(0) + 0
Cells(iRow + 1, 2).NumberFormat = "#,##0.00"
End If
Next
End Sub
 
Katılım
20 Ocak 2005
Mesajlar
526
Excel Vers. ve Dili
Excel 2007 Türkçe
Altın Üyelik Bitiş Tarihi
01-01-2024
Ucuz Bul sayfasında karşılaştırmada aynısını bulamıyor.
Hücrede benzerini bul sorununu çözmek lazım. ??
 

Ekli dosyalar

beab05

Özel Üye
Katılım
19 Mart 2007
Mesajlar
1,418
Excel Vers. ve Dili
Office 2013
Sayın @beab05 , aşağıdaki kod sizin için uygun olur mu?

C#:
Sub Test3()
'   Haluk - 09/03/2023

    Dim objHTTP As Object, strURL As String
    Dim HTML As Object, Tables As Object, Table As Object
    Dim x As Integer, i As Long, iRow As Long, j As Integer, iCount As Integer
  
    Range("A1:B" & Rows.Count).ClearContents
    Range("A1:B1") = Array("Ürün", "Fiyat")
  
    Set objHTTP = CreateObject("MSXML2.XMLHTTP")
    strURL = "https://www.imecemarket.com/meyve-sebze"

    objHTTP.Open "GET", strURL, False
    objHTTP.send

    Set HTML = CreateObject("HTMLFILE")
    HTML.body.innerHTML = objHTTP.responseText
   
    Set Divs = HTML.getElementsByTagName("div")
   
    For x = 0 To Divs.Length - 1
        If Divs(x).classname = ("product-filter product-filter-bottom filters-panel") Then
            iCount = Split(Split(Divs(x).innerText, "(")(1), " ")(0)
        End If
    Next
   
    For j = 1 To iCount
        strURL = "https://www.imecemarket.com/meyve-sebze?page=" & j
       
        objHTTP.Open "GET", strURL, False
        objHTTP.send
   
        HTML.body.innerHTML = objHTTP.responseText
       
        Set Divs = HTML.getElementsByTagName("div")

        For x = 0 To Divs.Length - 1
            If Divs(x).classname = "product-item-container" Then
                iRow = iRow + 1
                Cells(iRow + 1, 1) = Divs(x).getElementsByTagName("a")(0).Title
            End If
            If Divs(x).classname = "price" Then
                Cells(iRow + 1, 2) = Split(Divs(x).innerText, " ")(0) + 0
                Cells(iRow + 1, 2).NumberFormat = "#,##0.00"
            End If
        Next
    Next
End Sub
.
Sayın @Haluk benim için uygun olup olmamasının bir önemi yok. Bunu soruyu soran arkadaşa sorun bence..
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Ben arkadaşa "Limit" parametreli cevap vermiştim ama siz pek beğenmemiştiniz. Onun için size sordum ... :)

.
 

beab05

Özel Üye
Katılım
19 Mart 2007
Mesajlar
1,418
Excel Vers. ve Dili
Office 2013
Ben arkadaşa "Limit" parametreli cevap vermiştim ama siz pek beğenmemiştiniz. Onun için size sordum ... :)

.
Uzasın istemiyorum ama limit doğru çözüm değildi, limit üstündeki veriler alınmıyordu.. Neyse boşverelim beyin fırtınası tartışması olarak kalsın :)
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Ben zaten "uzatmak" için değil, "takılmak" için yazmıştım..... :)

.
 

beab05

Özel Üye
Katılım
19 Mart 2007
Mesajlar
1,418
Excel Vers. ve Dili
Office 2013
Takılan ben oldum :) Son kodu da test etmedim ama eminim her zamanki gibi harika olmuştur...
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Eyvallah .... :)

.
 

polis-53

Altın Üye
Katılım
26 Aralık 2008
Mesajlar
1,118
Excel Vers. ve Dili
EXCEL 2016 TÜRKÇE
Altın Üyelik Bitiş Tarihi
23-02-2025
ama sadece 100 satır getiriyor
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Muhterem, ne kadar varsa o kadar getiriyor.

Daha fazlasi olsa, dukkan sizin .... de, yok maalesef.


.
 

beab05

Özel Üye
Katılım
19 Mart 2007
Mesajlar
1,418
Excel Vers. ve Dili
Office 2013
Limiti 200 yapın..

Maceraya devam :)

Hem hangi link ve kategorileri hangi kodla deniyorsunuz?
 
Son düzenleme:
Katılım
9 Mart 2023
Mesajlar
11
Excel Vers. ve Dili
v6
merhaba
paylaşılan kod işimi gördü ancak sitede

1 2 3 ...200 e yakın sayfa var bu sayfalardaki verileri alabilmem için nasıl bir döngü kullanmak gerekir.
 

beab05

Özel Üye
Katılım
19 Mart 2007
Mesajlar
1,418
Excel Vers. ve Dili
Office 2013
merhaba
paylaşılan kod işimi gördü ancak sitede

1 2 3 ...200 e yakın sayfa var bu sayfalardaki verileri alabilmem için nasıl bir döngü kullanmak gerekir.
Merhaba;

Hangi siteyi deniyorsunuz bilmem ama olması gereken mantığı açıklamaya çalışayım.

Yine market sitesi gibi düşünelim.

1- İlk önce ana sayfa request edilir. (HTML verileri alınır)

2- Daha sonra ana kategoriler aranır. Meyve, sebze, süt ürünleri, unlu mamuller, deterjan vs..

3- Daha sonra bu ana kategori linklerine göre alt kategorileri aranır. Örneğim meyve ise elma, armut gibi alt kategoriler.

4- Daha sonra da bu alt kategorilere ait sayfa sayısı belirlenip ister sayfa seçmeli ister tümünü alacak bir döngüyle (tümünü tek seferde almayı hiç tavsiye etmem) ürünler listelenir.

Sayfa sayıları alt kategori seçimi için de geçerli olabilir örneğin 100 lerce alt kategori varsa bunun için de sayfalama yapmak gerekir.

Kategori, alt kategori seçimleri için ComboBox ya da ListBox uygun olabilir ve seçilen parametrelere göre ürünler listelenebilir.

Kod kısmına gelirsek. VBA için bu kişi ben değilim. :)
 

beab05

Özel Üye
Katılım
19 Mart 2007
Mesajlar
1,418
Excel Vers. ve Dili
Office 2013
Merhaba;

@Haluk beyin kodunu ilgili siteye göre düzenledim. Sayfalama olayına girmedim. Kendisi isterse ekler.

Rich (BB code):
Sub Test4()

'   Haluk - 09/03/2023

    Dim objHTTP As Object, strURL As String

    Dim HTML As Object, Tables As Object, Table As Object

    Dim x As Integer, i As Long, iRow As Long, j As Integer, iCount As Integer

    Range("A1:B" & Rows.Count).ClearContents

    Range("A1:B1") = Array("Ürün", "Fiyat")

    Set objHTTP = CreateObject("MSXML2.XMLHTTP")


    Set HTML = CreateObject("HTMLFILE")

    Set Divs = HTML.getElementsByTagName("div")



        strURL = "https://www.onlineyedekparca.com/kategori/opel-tigra-a-yedek-parca"

     

        objHTTP.Open "GET", strURL, False

        objHTTP.send

 

        HTML.body.innerHTML = objHTTP.responseText

     

        Set Divs = HTML.getElementsByTagName("div")



        For x = 0 To Divs.Length - 1

            If Divs(x).classname = "showcase-title" Then

                iRow = iRow + 1

                Cells(iRow + 1, 1) = Divs(x).getElementsByTagName("a")(0).Title

            End If

            If Divs(x).classname = "showcase-price" Then

                Cells(iRow + 1, 2) = Split(Divs(x).innerText, " ")(0) + 0

                Cells(iRow + 1, 2).NumberFormat = "#,##0.00"

            End If

        Next

End Sub
 
Katılım
9 Mart 2023
Mesajlar
11
Excel Vers. ve Dili
v6
çok teşekkür ederim ancak dediğim gibi tek sayfa değilde kaç adet sayfa varsa o kadar sayfayı dolaşıpda verileri almak tam çözümüm olacaktır.
@Haluk Bey destek olabilirmisiniz acaba
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
C#:
Sub Test5()
' Haluk - 09/03/2023

Dim objHTTP As Object, strURL As String
Dim HTML As Object, Tables As Object, Table As Object
Dim x As Integer, i As Long, iRow As Long, j As Integer, iCount As Integer

Range("A1:B" & Rows.Count).ClearContents
Range("A1:B1") = Array("Ürün", "Fiyat")

Set objHTTP = CreateObject("MSXML2.XMLHTTP")

Set HTML = CreateObject("HTMLFILE")

strURL = "https://www.onlineyedekparca.com/kategori/opel-tigra-a-yedek-parca"

objHTTP.Open "GET", strURL, False
objHTTP.send

HTML.body.innerHTML = objHTTP.responseText

Set Divs = HTML.getElementsByTagName("div")

For x = 0 To Divs.Length - 1
    If Divs(x).classname = ("record-count text-right mt-3 mb-3") Then
        iCount = Split(Divs(x).innerText, " ")(1) \ 30 + 1
    End If
Next

For j = 1 To iCount
    strURL = "https://www.onlineyedekparca.com/kategori/opel-tigra-a-yedek-parca?tp=" & j
    
    objHTTP.Open "GET", strURL, False
    objHTTP.send
    
    HTML.body.innerHTML = objHTTP.responseText
    
    Set Divs = HTML.getElementsByTagName("div")
    
    For x = 0 To Divs.Length - 1
        If Divs(x).classname = "showcase-title" Then
            iRow = iRow + 1
            Cells(iRow + 1, 1) = Divs(x).getElementsByTagName("a")(0).Title
        End If
        If Divs(x).classname = "showcase-price" Then
            Cells(iRow + 1, 2) = Split(Divs(x).innerText, " ")(0) + 0
            Cells(iRow + 1, 2).NumberFormat = "#,##0.00"
        End If
    Next
Next
End Sub
.
 
Katılım
9 Mart 2023
Mesajlar
11
Excel Vers. ve Dili
v6
Çok teşekkür ederim.

C#:
Sub Test5()
' Haluk - 09/03/2023

Dim objHTTP As Object, strURL As String
Dim HTML As Object, Tables As Object, Table As Object
Dim x As Integer, i As Long, iRow As Long, j As Integer, iCount As Integer

Range("A1:B" & Rows.Count).ClearContents
Range("A1:B1") = Array("Ürün", "Fiyat")

Set objHTTP = CreateObject("MSXML2.XMLHTTP")

Set HTML = CreateObject("HTMLFILE")

strURL = "https://www.onlineyedekparca.com/kategori/opel-tigra-a-yedek-parca"

objHTTP.Open "GET", strURL, False
objHTTP.send

HTML.body.innerHTML = objHTTP.responseText

Set Divs = HTML.getElementsByTagName("div")

For x = 0 To Divs.Length - 1
    If Divs(x).classname = ("record-count text-right mt-3 mb-3") Then
        iCount = Split(Divs(x).innerText, " ")(1) \ 30 + 1
    End If
Next

For j = 1 To iCount
    strURL = "https://www.onlineyedekparca.com/kategori/opel-tigra-a-yedek-parca?tp=" & j
  
    objHTTP.Open "GET", strURL, False
    objHTTP.send
  
    HTML.body.innerHTML = objHTTP.responseText
  
    Set Divs = HTML.getElementsByTagName("div")
  
    For x = 0 To Divs.Length - 1
        If Divs(x).classname = "showcase-title" Then
            iRow = iRow + 1
            Cells(iRow + 1, 1) = Divs(x).getElementsByTagName("a")(0).Title
        End If
        If Divs(x).classname = "showcase-price" Then
            Cells(iRow + 1, 2) = Split(Divs(x).innerText, " ")(0) + 0
            Cells(iRow + 1, 2).NumberFormat = "#,##0.00"
        End If
    Next
Next
End Sub
.
[/QUOTE]
teş
 
Üst