Como extrair elementos HTML?

Como extrair elementos HTML?

Eu tenho algumas centenas desses divs, que preciso classificar e filtrar.

Gostaria de remover TODO HTML e ficar apenas com o seguinte:

Exemplo

  • Nome=Keith
  • E-mail= [e-mail][e-mail protegido][/e-mail]
  • Loja= Loja 1 (tem apenas 2 opções. Loja 1, Loja 2)

Todo o código abaixo está em uma única célula individual, portanto, existem cerca de 400 células

<div userid=""286"">
    <div id=""694"">
        <h1 style=""display:none"">Keith</h1>
        <div>
            <label class=""ufo-cform-label"">Name</label>
        </div>
        <div>Keith</div>
    </div>
    <div id=""697"">
        <h1 style=""display:none"">[email protected]</h1>
        <div>
           <label class=""ufo-cform-label""> Email Address</label>
        </div>
        <div>[email protected]</div>
    </div>
    <div id=""698"">
        <h1 style=""display:none"">Store 1</h1>
        <div>
            <label class=""ufo-cform-label"">Please choose your closest store</label>
        </div>
        <div>Store 1</div>
    </div>
</div>

Isso é possível no Excel? Obrigado por qualquer orientação.

Responder1

Infelizmente, sua pergunta carece de muitos detalhes, o que torna a resposta complicada.

As células estão no mesmo formato? É o HTML que muda ou apenas os valores. Você está sempre procurando Nome, Email e Loja? As quebras de linha estão no mesmo lugar? Você também não menciona se deseja usar uma fórmula de planilha ou VBa.

Com base no exemplo que você deu, este VBa deve fazer o básico ou, pelo menos, fornecer o suficiente para você seguir em frente.

Sub DoTheThingTheyWant()

Dim myValue As String
myValue = Range("A1").Value

Dim myValueSplit() As String
myValueSplit = Split(myValue, ">")

Dim nameSplit() As String


Range("B1").Value = "Name: " & GetValue(myValueSplit, 9)
Range("B2").Value = "Email: " & GetValue(myValueSplit, 13)
Range("B3").Value = "Store: " & GetValue(myValueSplit, 29)

End Sub


Function GetValue(myValueSplit() As String, pos As Integer)

Dim result() As String

result = Split(myValueSplit(pos), "<")

GetValue = result(0)


End Function

Lembre-se, sempre salve uma cópia do seu trabalho primeiro como backup, pois as macros não desfazem!!

Responder2

Um pouco atrasado para a festa, mas eu precisava de uma resposta para mim e precisava fazer isso manualmente, sem VBA. Acabei de usar substituições aninhadas tão fáceis para usuários que não são VBA:

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE([@Description],"<html-blob>",""),"gt;",""),"</i>",""),"<i>",""),"</html-blob>",""),"</a>",""),"amp;",""),"<br />",""),"</span>",""),"&nbsp",""),"<a href=",""),"</b>",""),"<span>",""),"<br>",""),"<b>",""),"</u>",""),"<u>","")

Para usá-lo, troque "[@Description]" pelos dados de origem.

Para adicionar mais, basta copiar a função substituta do meio assim:

SUBSTITUTE([@Description],"<html-blob>","")

e cole na fonte da fórmula, aqui "[@Descrição]", pois usei isso em uma tabela. Altere o substituto duplicado.

informação relacionada