Obtenha a tag selecionada do arquivo html

Obtenha a tag selecionada do arquivo html

Eu tenho o código-fonte de uma página e preciso obter todas as tags desse arquivo. A ordem é importante. Preciso de scripts externos e embutidos. tag deve ser incluída na saída. Estou procurando uma ferramenta Linux de console.

Tentei pesquisar mas não encontrei nada, a ponto de usar o jQuery para obter essas informações e colar em um arquivo. Mas esta saída tem uma codificação estranha, então preciso analisá-la tradicionalmente.

Exemplo: Entrada:

<html>
  <head>
    <script src="script1.js"></script>
    <script src="script2.js"></script>
    <script>alert('hello');</script>
  </head>
  <body>
    <div id="main">...</div>
    <script src="footer.js">
  </body>
</html>

Saída:

<script src="script1.js"></script>
<script src="script2.js"></script>
<script>alert('hello');</script>
<script src="footer.js">

Segundo exemplo, produza apenas atributos src.

script1.js
script2.js
inline script 
footer.js

Responder1

Você pode usar greppara isso e seu único parâmetro correspondente ( -o), por exemplo:

$ grep -o "<[^>]*>" <(curl -s http://example.com/)

Isso imprimirá todas as tags HTML, incluindo o pedido.

Para incluir apenas <script>tags, tente (altere index.htmlcom seu arquivo):

$ grep -Eo "<script.*(</script>|>)" index.html

Para obter apenas os nomes dos arquivos (do srcatributo), você pode estender adicionando outro grep, por exemplo:

$ grep -Eo "<script.*(</script>|>)" index.html | grep -o '"[^"]*"' | tr -d '"'

A sintaxe acima não irá ajudá-lo com muitas variações diferentes de código HTML, portanto, para soluções mais complexas,usando regex para analisar htmlem geral não é aconselhável, portanto você deve usar ferramentas apropriadas (idioma de sua preferência ou confira estesferramentas de concha).

Responder2

Sei que você já aceitou uma resposta, mas também quero acrescentar que você pode analisarXPath.

Destina-se especificamente a dados de estilo XML.

No seu caso, o xpath para isso seria

//script

Aquitambém é outro exemplo de alguém usando XPath para analisar HTML

informação relacionada