获取网站元数据(Excel VBA/Python)

0 投票
2 回答
54 浏览
提问于 2025-04-11 22:19

我想用Excel的VBA来获取下面网站的股票代码信息:https://www.screener.in/company/KRISHANA/

我查看了网络选项卡,发现代码在“同行”这个节点下:https://www.screener.in/api/company/13611040/peers/

下面是我在Excel VBA中写的代码,网页上没有关于这个代码的信息。

注意:我不想重复这个话题,我到处搜索过了。如果在VBA中不行,那我们能不能用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 个回答

0

你可以直接使用网页导入功能:

  1. 先点击“数据”选项,然后选择“从网页获取”
  2. 把这个链接粘贴进去:“https://www.screener.in/api/company/13611040/peers/”
  3. 点击“Table0”这个选项
  4. 然后点击“加载”按钮
1

如果网址总是一样的,而你只需要更改仓库的ID,你可以用下面的方法来获取这个ID。这种方法没有处理任何错误,只是展示了基本的操作机制。

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

撰写回答