Ferramentas para analisar índices HTTP gerados automaticamente?

2

Os servidores da Web geralmente geram índices de diretório que listam os arquivos em um diretório e metadados adicionais. Há variação no conteúdo e formatação dessas páginas, mas geralmente tem uma strong semelhança comum.

Existem operações comuns, como a identificação do arquivo mais recente em um diretório, de acordo com o registro de data e hora listado ou o download do arquivo com a versão mais recente. Estes envolvem etapas comuns de baixar o índice html, extração de nomes de arquivos, correspondência de padrões, análise de data, classificação, etc ... Eu costumo hackear uma solução mínima no bash usando wget, grep, awk, sort e date, mas eu m curioso se alguém trabalhou em soluções generalizadas para problemas envolvendo índices de arquivos html.

Existem alguns utilitários (preferencialmente de linha de comando) para processar / analisar esses arquivos html?

Obviamente, é uma tarefa não trivial e não pode ser executada perfeitamente em todos os casos, mas uma solução que evita a reimplementação da roda em 90% de todos os casos está certamente dentro do campo de possibilidades.

    
por ebpa 11.01.2016 / 00:02

1 resposta

0

Suponho que o que você quer dizer é que você quer analisar o HTML contido na resposta HTTP.
Se você estiver familiarizado com o PHP, pode usar o curl para recuperar a página e, em seguida, analisar a cadeia em sua estrutura DOM usando o PHP DOMDocument classe , então você pode recuperar o innerHTML de interesse, consultando a instância DOMDocument.
Como um script PHP de linha de comando

#!/usr/bin/php

// curl or readfile or whatever for url and assign HTML body into variable $html
$html = '<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width">
    <title></title>
    link
</head>
<body>
    <h1>stuff in directory listing</h1>
</body>
</html>
';

$DOM = @DOMDocument::loadHTML($html);

$element = $DOM->getElementsByTagName("h1")->item(0);
echo $element->nodeValue;

É assim que eu faria de qualquer maneira, e a razão é porque

  1. daria uma implementação flexível, na qual você pode se adaptar às diferentes respostas que os servidores da Web forneceriam a você.
  2. tentar analisar o conteúdo por regex seria muito difícil (supondo)

Aqui está uma demonstração - link

    
por 11.01.2016 / 04:56

Tags