Página 1 de 1

Extrair hyperlinks de Uma Determinada Classe com selenium?

Enviado: Ter Jun 02, 2020 1:08 pm
por pedrodssj
para extrair todos os hyperlinks de um site eu ja sei,agora eu gostaria de extrair através de uma determinada classe, abaixo e um exemplo de como executar para extrair todos os hyperlinks:

Código: Selecionar todos

Sub selenium_scrapeHyperlinksWebsite()

    Dim driver As WebDriver: Set driver = New ChromeDriver
    Dim todosOsLinks As WebElements, linkUnico As WebElement
    driver.Get "https://www.academiadasapostasbrasil.com/stats/match/alemanha/bundesliga/colonia/rb-leipzig/3047279"
    Range("B2").Select
   
    Application.Wait Now + TimeValue("00:00:05")
     
    Set todosOsLinks = driver.FindElementsByTag("a")
    
    
    For Each linkUnico In todosOsLinks
        ActiveCell.Offset(0, 1).Value = linkUnico.Attribute("href")
        ActiveCell.Offset(1, 0).Select
    Next linkUnico
  
End Sub

ai eu gostaria de extrair os hyperlinks desta classe:

Código: Selecionar todos

driver.getElementsByClassName("mobile_single_column")(7)
com protocolo http eu consigo extrair através de uma classe,exemplo abaixo:

Código: Selecionar todos

Sub GetVideoPage()

    Dim XMLReq As New MSXML2.XMLHTTP60
    Dim HTMLDoc As New MSHTML.HTMLDocument
    
    Dim VidCatList As MSHTML.IHTMLElement
    Dim VidCats As MSHTML.IHTMLElementCollection
    Dim VidCat As MSHTML.IHTMLElement
    Dim VidCatID As Integer
    
    Dim NextHref As String
    Dim NextURL As String
   
    Range("A1").Select
    
    

    
    
    XMLReq.Open "GET", "https://www.academiadasapostasbrasil.com/stats/match/alemanha/bundesliga/colonia/rb-leipzig/3047279", False
    XMLReq.Send
    
    If XMLReq.Status <> 200 Then
        MsgBox "Problem" & vbNewLine & XMLReg.Status & "" - "" & XMLReq.statusText
        Exit Sub
    End If
    
    
    HTMLDoc.body.innerHTML = XMLReq.responseText
    Set XMLReq = Nothing
    
     
    
    Set VidCatList = HTMLDoc.getElementsByClassName("mobile_single_column")(7)
    Set VidCats = VidCatList.getElementsByTagName("a")
    

    
    Debug.Print VidCats.Length
    
    For VidCatID = 1 To VidCats.Length - 1
        Set VidCat = VidCats(VidCatID)
    
    
       ActiveCell.Offset(0, 1).Value = VidCat.getAttribute("href")
        ActiveCell.Offset(1, 0).Select
       ', VidCat.getAttribute("href")
        
    
    Next VidCatID
    

    
End Sub
[REMOVIDO]

Re: Extrair hyperlinks de Uma Determinada Classe com selenium?

Enviado: Qui Jun 04, 2020 3:27 pm
por pedrodssj
pedrodssj escreveu: Ter Jun 02, 2020 1:08 pm para extrair todos os hyperlinks de um site eu ja sei,agora eu gostaria de extrair através de uma determinada classe, abaixo e um exemplo de como executar para extrair todos os hyperlinks:

Código: Selecionar todos

Sub selenium_scrapeHyperlinksWebsite()

    Dim driver As WebDriver: Set driver = New ChromeDriver
    Dim todosOsLinks As WebElements, linkUnico As WebElement
    driver.Get "https://www.academiadasapostasbrasil.com/stats/match/alemanha/bundesliga/colonia/rb-leipzig/3047279"
    Range("B2").Select
   
    Application.Wait Now + TimeValue("00:00:05")
     
    Set todosOsLinks = driver.FindElementsByTag("a")
    
    
    For Each linkUnico In todosOsLinks
        ActiveCell.Offset(0, 1).Value = linkUnico.Attribute("href")
        ActiveCell.Offset(1, 0).Select
    Next linkUnico
  
End Sub

ai eu gostaria de extrair os hyperlinks desta classe:

Código: Selecionar todos

driver.getElementsByClassName("mobile_single_column")(7)
com protocolo http eu consigo extrair através de uma classe,exemplo abaixo:

Código: Selecionar todos

Sub GetVideoPage()

    Dim XMLReq As New MSXML2.XMLHTTP60
    Dim HTMLDoc As New MSHTML.HTMLDocument
    
    Dim VidCatList As MSHTML.IHTMLElement
    Dim VidCats As MSHTML.IHTMLElementCollection
    Dim VidCat As MSHTML.IHTMLElement
    Dim VidCatID As Integer
    
    Dim NextHref As String
    Dim NextURL As String
   
    Range("A1").Select
    
    

    
    
    XMLReq.Open "GET", "https://www.academiadasapostasbrasil.com/stats/match/alemanha/bundesliga/colonia/rb-leipzig/3047279", False
    XMLReq.Send
    
    If XMLReq.Status <> 200 Then
        MsgBox "Problem" & vbNewLine & XMLReg.Status & "" - "" & XMLReq.statusText
        Exit Sub
    End If
    
    
    HTMLDoc.body.innerHTML = XMLReq.responseText
    Set XMLReq = Nothing
    
     
    
    Set VidCatList = HTMLDoc.getElementsByClassName("mobile_single_column")(7)
    Set VidCats = VidCatList.getElementsByTagName("a")
    

    
    Debug.Print VidCats.Length
    
    For VidCatID = 1 To VidCats.Length - 1
        Set VidCat = VidCats(VidCatID)
    
    
       ActiveCell.Offset(0, 1).Value = VidCat.getAttribute("href")
        ActiveCell.Offset(1, 0).Select
       ', VidCat.getAttribute("href")
        
    
    Next VidCatID
    

    
End Sub
[REMOVIDO]

eu como faz para somente extrair os hyperlink da classe solicitada com selenium me ajudem por favor!!!!

Re: Extrair hyperlinks de Uma Determinada Classe com selenium?

Enviado: Ter Jun 09, 2020 10:47 pm
por Raygsson
Desta forma:
Set todosOsLinks = driver.FindElementByClass("mobile_single_column").FindElementsByTag("a")
Trouxe isto:

Código: Selecionar todos

https://www.academiadasapostasbrasil.com/redirect/bet365/89339474/2582237/0
https://www.academiadasapostasbrasil.com/redirect/bet365/89339474/2582237/1
https://www.academiadasapostasbrasil.com/redirect/bet365/89339474/2582237/3
https://www.academiadasapostasbrasil.com/redirect/bet365/89339474/2582237/2
https://www.academiadasapostasbrasil.com/redirect/betfair/29816892/170531011/0
https://www.academiadasapostasbrasil.com/redirect/betfair/29816892/170531011/1
https://www.academiadasapostasbrasil.com/redirect/betfair/29816892/170531011/3
https://www.academiadasapostasbrasil.com/redirect/betfair/29816892/170531011/2
https://www.academiadasapostasbrasil.com/redirect/rivalo/30870280/30870280-0/0
https://www.academiadasapostasbrasil.com/redirect/rivalo/30870280/30870280-0/1
https://www.academiadasapostasbrasil.com/redirect/rivalo/30870280/30870280-0/3
https://www.academiadasapostasbrasil.com/redirect/rivalo/30870280/30870280-0/2
https://www.academiadasapostasbrasil.com/redirect/bet365/89339474/2582243/0
https://www.academiadasapostasbrasil.com/redirect/bet365/89339474/2582243/1
https://www.academiadasapostasbrasil.com/redirect/bet365/89339474/2582243/2
https://www.academiadasapostasbrasil.com/redirect/betfair/29816892/170531021/0
https://www.academiadasapostasbrasil.com/redirect/betfair/29816892/170531021/1
https://www.academiadasapostasbrasil.com/redirect/betfair/29816892/170531021/2
https://www.academiadasapostasbrasil.com/redirect/rivalo/30870280/30870280-1/0
https://www.academiadasapostasbrasil.com/redirect/rivalo/30870280/30870280-1/1
https://www.academiadasapostasbrasil.com/redirect/rivalo/30870280/30870280-1/2