get data from web page

Quazlat

New Member
Joined
Nov 28, 2024
Messages
6
Office Version
  1. 365
Platform
  1. Windows
  2. Web

Attachments

  • Ekran görüntüsü 2024-11-28 112420.png
    Ekran görüntüsü 2024-11-28 112420.png
    115.6 KB · Views: 4

Excel Facts

Which Excel functions can ignore hidden rows?
The SUBTOTAL and AGGREGATE functions ignore hidden rows. AGGREGATE can also exclude error cells and more.
ADEL - Adel Kalemcilik Stock | I want to transfer the balance sheet data from İş Yatırım to Excel by selecting the fields I marked in the picture. Can you help? excel etca Hello, ADEL - Adel Kalemcilik Stock | I want to transfer the balance sheet data from İş Yatırım to Excel by selecting the fields I marked in the picture. Can you help? excel vba code
 
Upvote 0
Merhaba, foruma hoşgeldin.

Basit yöntemi: Verilen URL, Power Query -> Veri Al -> Web'den Al seçeneğinde kullanılır ve çözülen tablolardan Table16 seçilir. İstenilen veri bu table içinde.

İlk başta biraz karmaşık gelebilir ama daha verimli olan yöntemi, sayfanın kullandığı Web Servis URL'i bulunur, parametreler ayarlanır ve ham veri alınabilir. Sorgu adımları takip edilerek bu yöntemin de çok karmaşık olmadığı görülebilir.

-------

Hi, welcome to the board!

Simple Method: The provided URL is used in Power Query -> Get Data -> From Web. Table16 is selected from the resolved tables. The desired data is within this table.

More Efficient/Advanced Method: It may initially seem a bit complex, but a more efficient approach is to locate the Web Service URL used by the page, configure the parameters, and directly retrieve the raw data. It can be seen that this method is also not very complicated by following the query steps.


Power Query:
let
    // Requested company code and exchange code
    // Can be taken from the worksheet to easily search for data of other companies
    code = "ADEL",
    exchange = "TRY",

    // Request is based on today's date
    today = DateTime.LocalNow(),  
    years = List.Transform(List.Numbers(-1, 4, -1), each {
        Number.Abs(_),
        Date.Year(Date.AddQuarters(today, _)),
        Date.QuarterOfYear(Date.AddQuarters(today, _)) * 3
    }),
    // Generating year and period query parameters
    period = List.Transform(years, each
        "&year" & Text.From(_{0}) & "=" & Text.From(_{1}) &
        "&period" & Text.From(_{0}) & "=" & Text.From(_{2})
    ),
   
    // Web service URL
    url = "https://www.isyatirim.com.tr/_layouts/15/IsYatirim.Website/Common/Data.aspx/MaliTablo?companyCode=" & code & "&exchange="
            & exchange & "&financialGroup=XI_29"
            & Text.Combine(period, "&"),

    // Get data and transform it (with year/month column names)
    Source = Json.Document(Web.Contents(url)),
    value = Source[value],
    ConvertToTable = Table.FromList(value, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    ExpandRecords = Table.ExpandRecordColumn(ConvertToTable, "Column1",
        {"itemCode", "itemDescTr", "itemDescEng", "value1", "value2", "value3", "value4"},
        {"itemCode", "itemDescTr", "itemDescEng"} & List.Transform(years, each Text.From(_{1}) & "/" & Text.From(_{2}))
    )
in
    ExpandRecords
 
Upvote 0
Merhaba , öncelikle cevabın için teşekkür ederim. Mümkünse VBA kodu olarak paylaşabilir misin ?

Hello, first of all, thank you for your answer. If possible, can you share it as VBA code?
 
Upvote 0
Merhaba , öncelikle cevabın için teşekkür ederim. Mümkünse VBA kodu olarak paylaşabilir misin ?
Bu problemin VBA ile çözümü gereksiz yere karmaşıktır - özellikle kullandığın Excel versiyonunda desteklenen Power Query ile yukarıdaki 10 satırlık bir kod ile kolayca çözülebildiği bir durumda. Eğer daha önce hiç Power Query kullanmadın ve bu yüzden bu yöntemi kullanmakta tereddüt ediyorsan, bu vesile ile başlaman çok yerinde olacaktır ve kesinlikle tavsiye ederim.

Yine de VBA ile devam etmek istersen aşağıdaki sorunun çözümüne başvurabilirsin. Bir HTTP Request nesnesi ile gerekli URL'yi çağırıp, geri döndürülen JSON verisini çözümleyeceksin.
Belirttiğin site için gerekli olan Web Servis end-point'ini zaten yukarıda belirttim, bu problemin çözümünün yarısı zaten URL'yi bulmakta. Ama VBA ile çözümlemek zorunda olduğun JSON verisi oldukça zorlaştıracak işini, çünkü VBA'da yerleşik bir JSON Parser fonksiyonu yok bildiğim kadarıyla.

Bağlantısını paylaştığım sorudan esinlenerek örnek ve başlangıç olması için, Web Servis verisini aşağıdaki şekilde alabilirsin.
VBA Code:
Public Sub XMLhttpSample()
    Dim httpReq As Object
    Set httpReq = CreateObject("MSXML2.XMLHTTP")
    Dim rootURL As String
    Dim code As String
    Dim exchange As String
    
    code = "ADEL"
    exchange = "TRY"    
    rootURL = "https://www.isyatirim.com.tr/_layouts/15/IsYatirim.Website/Common/Data.aspx/MaliTablo?companyCode=" & code & "&exchange=" & exchange & "&financialGroup=XI_29&" & _
        "&year1=2024&period1=9&year2=2024&period2=6&year3=2024&period3=3&year4=2023&period4=12"
       
    With httpReq
        .Open "GET", rootURL, False
        .send
        Debug.Print .responseText
    End With
End Sub

Dilersen URL yerine soruda belirttiğin URL'yi de kullanabilirsin ama sayfa statik yüklenmiyor, dolayısıyla VBA ile alacağın HTML kodu, dinamik olarak JavaScript ile yüklenecek koddan farklı olacaktır.
 
Upvote 0
Solution
Thank you very much
You're welcome.

Not: Eğer soruna cevap olduğunu düşündüğün bir gönderi varsa, gönderi yanındaki checkmark ikonuna tıklayarak gönderi çözüm olarak işaretleyerek gelecekte bu ve benzeri sorusu olanlara bu cevabı daha rahat bulmalarına yardımcı olabilirsin.
 
Upvote 0

Forum statistics

Threads
1,224,827
Messages
6,181,197
Members
453,021
Latest member
pingpong7117

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top