자동으로 생성된 HTTP 인덱스를 구문 분석하는 도구?

자동으로 생성된 HTTP 인덱스를 구문 분석하는 도구?

웹 서버는 일반적으로 디렉터리 색인을 생성하여 디렉터리의 파일과 추가 메타데이터를 나열합니다. 이러한 페이지는 콘텐츠와 형식이 다양하지만 종종 강한 유사점을 공유합니다.

일반적인 작업에는 나열된 타임스탬프를 기반으로 디렉터리에서 최신 파일을 식별하거나 최신 버전의 파일을 다운로드하는 것이 포함됩니다. 여기에는 html 인덱스 다운로드, 파일 이름 추출, 패턴 일치, 날짜 구문 분석, 정렬 등과 ​​같은 일반적인 단계가 포함됩니다. 저는 보통 wget, grep, awk, sort 및 date를 사용하여 bash에서 최소한의 솔루션을 작성하지만 다음과 같은 경우가 꽤 궁금합니다. 누구든지 html 파일 인덱싱과 관련된 문제에 대한 일반적인 해결책을 조사한 적이 있습니다.

이러한 html 파일을 처리/파싱하는 유틸리티(바람직하게는 명령줄)가 있습니까?

분명히 이것은 사소한 작업이 아니며 모든 경우에 완벽하게 수행될 수는 없지만 휠을 다시 구현하지 않는 솔루션은 확실히 90%의 경우에 가능합니다.

답변1

나는 당신이 HTTP 응답에 포함된 HTML을 구문 분석하고 싶다는 뜻이라고 가정합니다.
PHP에 익숙하다면 컬을 사용하여 페이지를 검색한 다음 PHP를 사용하여 문자열을 DOM 구조로 구문 분석할 수 있습니다.DOM 문서 클래스, DOMDocument 인스턴스를 쿼리하여 관심 있는 innerHTML을 검색할 수 있습니다.
명령줄 PHP 스크립트로

#!/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;

어차피 할 거고, 그 이유는

  1. 이는 웹 서버에서 제공하는 다양한 응답에 적응할 수 있는 유연한 구현을 제공합니다.
  2. 정규식을 통해 콘텐츠를 구문 분석하는 것은 매우 어려울 것입니다.

여기 하나 있어요데모-http://codepad.viper-7.com/apsiKR

관련 정보