使用CSS选择器从网站抓取数据Excel VBA

我正在尝试使用CSS选择器从网站抓取特定数据。我在QHar的帮助下成功完成了工作,但现在的要求已经改变。这是我的代码如下:

代码

Public Sub CompanyData2()

Dim html As HTMLDocument,ws As Worksheet,re As Object

Set re = CreateObject("VBScript.RegExp")
re.Pattern = "\s{2,}"
Set ws = ThisWorkbook.Worksheets("Sheet1")
Set html = New HTMLDocument

With CreateObject("MSXML2.XMLHTTP")
    .Open "GET","https://www.bizi.si/iskanje?q=",False
    .send
    html.body.innerHTML = .responseText
End With

ws.Range("A4").Value = re.Replace(Join$(Array(html.querySelector("td.item a").innerText),","),Chr$(32))
ws.Range("A5").Value = re.Replace(Join$(Array(html.querySelector("td.item + td.item").innerText),Chr$(32))
ws.Range("B6").Value = re.Replace(Join$(Array(html.querySelector("td.item + td.item + td.item + td.item").innerText),Chr$(32))

End Sub

结果如下:

使用CSS选择器从网站抓取数据Excel VBA

网站

使用CSS选择器从网站抓取数据Excel VBA

我想这样提取工作表1 A3上的公司名称:

使用CSS选择器从网站抓取数据Excel VBA

谢谢。

koten443322 回答:使用CSS选择器从网站抓取数据Excel VBA

您需要在A1中使用REPROMAT,然后在发出初始查询后,您必须访问实际的公司页面以获取显示的公司名称。如果您直接使用公司网址,则可以跳过第一个请求,然后再使用第二个请求中的代码。

Public Sub CompanyData()
    Dim html As HTMLDocument,ws As Worksheet,nodes As Object

    Set ws = ThisWorkbook.Worksheets("Sheet1")
    Set html = New HTMLDocument

    With CreateObject("MSXML2.XMLHTTP")
        .Open "GET","https://www.bizi.si/iskanje?q=" & Application.EncodeURL(ws.Range("A1").Value),False
        .send
        html.body.innerHTML = .responseText

        Set nodes = html.querySelectorAll("td.item")

        With ws
            .Range("A4").Value = nodes.Item(0).FirstChild.innerText
            .Range("A5").Value = nodes.Item(1).innerText
            .Range("A6").Value = "DŠ: " & nodes.Item(3).innerText
        End With

        .Open "GET",html.querySelector("[id$=linkCompany]").href,False
        .send
        html.body.innerHTML = .responseText
        ws.Range("A3") = html.querySelector("#ctl00_ctl00_cphMain_cphMainCol_CompanySPLPreview1_labTitlePRS").innerText
    End With
End Sub
本文链接:https://www.f2er.com/3086928.html

大家都在问