Getting website metadata (Excel VBA/Python)

55 Views Asked by At

I am trying to get information of stock code from below website using excel vba https://www.screener.in/company/KRISHANA/

I went through network tab and found out the code was in under peers node https://www.screener.in/api/company/13611040/peers/

below is the code which I've written in excel vba, the html page has no information on the code

Note: I dont want to duplicate this thread, I tried searching everywhere, if its not possible in vba, can we achieve this in python.

URLS = "https://www.screener.in/company/KRISHANA/" 
Set xhr = New MSXML2.ServerXMLHTTP60
    With xhr
        .Open "GET", URLS, False
        .setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36"
        .send
            If .readyState = 4 And .Status = 200 Then
                Set Doc = New MSHTML.HTMLDocument
                Doc.body.innerHTML = .responseText
            End If
        End With
        DoEvents
2

There are 2 best solutions below

1
Zwenn On BEST ANSWER

If the url is always the same and you only need to change the warehouse id, you can get the id in the following way. This is without intercepting any errors and only shows the basic mechanism.

Sub getDataWarehouseId()

    Const url As String = "https://www.screener.in/company/KRISHANA/"
    Dim doc As Object
    
    Set doc = CreateObject("htmlFile")
    
    With CreateObject("MSXML2.XMLHTTP.6.0")
        .Open "GET", url, False
        .send
        
        If .Status = 200 Then
            doc.body.innerHTML = .responseText
            MsgBox doc.getElementByID("company-info").getAttribute("data-warehouse-id")
        Else
            MsgBox "Page not loaded. HTTP status " & .Status
        End If
    End With
End Sub
4
ceci On

You can just use the native web import:

  1. Go to Data > From web
  2. paste "https://www.screener.in/api/company/13611040/peers/"
  3. Click on "Table0"
  4. Click on "load"