2011-02-14 2 views
1

html을 구문 분석하고 쉘 스크립트를 사용하여 html의 4 부분을 추출해야합니다. 그러나 나는 껍질이 새롭다. 난 그냥 cat $1에 대한 루프를 시작하여 HTML의 각 라인을 살펴 봅니다. 아무도 나를 도와 줄 수 없나요?쉘을 사용하여 html 구문 분석 및 데이터 추출

+0

이 얼마나 복잡 HTML을 추출 할입니까? 그것은 단지'

. *

'또는 더 정교합니다 ('# heading' 요소 다음의 12 번째 목록 항목에서 7 번째 단락)입니까? – Boldewyn

+0

몇 가지 예제 HTML과 추출하려고하는 것을 보여줄 수 있습니까? –

+0

HTML 구문 분석기를 사용해야하지만, 순수한 쉘로 수행한다면'cat'과'for'가 잘못된 접근법입니다. '-r 행을 읽는 동안; 무언가를하십시오; done

답변

3

htmlutils을 사용하거나 간단한 추출을 위해 grep을 사용할 수 있습니다. 다음 예를 참조하십시오

  • 는 H1의 외부 HTML을 추출 :

    $ curl -s http://example.com/ | grep -o '<h1>.*</h1>' 
    <h1>Example Domain</h1> 
    
  • 몸을 추출 : 또한 tr '\n' ' '을 사용할 수 있습니다

    $ curl -s http://example.com/ | xargs | grep -o '<body>.*</body>' 
    <body> <div> <h1>Example Domain</h1> ... 
    

    대신 xargs의. 여러 개의 태그에 대한

  • 은 다음을 참조하십시오 Text between two tags 유닉스 SE


에서 더 복잡한 구문 분석을 위해, 당신은 jump between matching html tags하거나 편집 할 수있는 당신이 그런 예/VI로 현재 위치에서 편집기를 사용할 수있다 제자리에서 내용.

예 헤더에서 스타일 태그를 제거하고 분석 출력 인쇄 그러므로 적절한 언어를 사용한다 장기적인 접근 방식,

$ curl -s http://example.com/ | ex -s +'/<style.*/norm nvatd' +%p -cq! /dev/stdin 

그것은 당신의 HTML을 구문 분석에 대한 정규식을 사용하는 not advised있어 단을 (예 : Python, perl 또는 PHP DOM).

은 참조 :