Bash에서 HTML 구문 분석(grep이 충분하지 않은 경우)

Bash에서 HTML 구문 분석(grep이 충분하지 않은 경우)

이 작업을 수행하는 프로그램이 있을 것이라고 확신하지만 찾을 수 없기 때문에 이것이 나를 미치게 만듭니다.
참고로 저는 ARM/Raspberry를 사용할 예정이므로 불행하게도 Xidel누군가가 직접 컴파일하는 올바른 방향을 알려줄 만큼 친절하지 않는 한(가능한 경우) 이는 옵션이 아닙니다. 나도 그것을 시도했지만 w3m페이지를 다른 파일로 덤프하여 서식을 지정하는 것이 실제로 도움이 되는지 잘 모르겠습니다. 하지만 제가 틀렸다는 것을 다시 한번 증명해 주세요!

기본적으로 https URL을 읽은 다음 HTML을 Bash에서 쉽게 액세스할 수 있는 것으로 구문 분석하고 마지막으로 일부 값을 데이터베이스에 저장해야 합니다.
를 사용하여 대부분의 작업을 간단하게 완료했지만 grep필요한 데이터가 올바른 형식이 아닌 경우에는 막히게 됩니다. 예를 참조하세요:

<h1>Title</h1> #easy to extract Title only with grep | sed

<h1>
Title
</h1> #no way

여기에서 문제를 볼 수 있습니다. 제가 필요한 것은 현재 가지고 있는 "무작위" 형식의 출력이 아니라 전체 페이지를 읽고 일련의 콘텐츠를 제공하는 스크립팅 솔루션입니다.
모두 감사합니다

답변1

필터 파일을 사용하겠습니다.tidy, 각 최상위 태그를 별도의 줄에 배치하고 이러한 유형의 스크립팅(예: Perl)에 더 적합한 것을 사용하여 태그를 처리합니다. sed변경 사항이 매우 간단할 때 가장 유용합니다.

예를 들어, 이 페이지의 일부(필터링 후)는 다음과 같습니다( tidy -wrap 4096줄 바꿈을 줄이는 데 사용됨).

<body class="question-page new-topbar">
<noscript>
<div id="noscript-padding"></div>
</noscript>
<div id="notify-container"></div>
<div id="overlay-header"></div>
<div id="custom-header"></div>
<div class="topbar">
<div class="topbar-wrapper">
<div class="js-topbar-dialog-corral">
<div class="topbar-dialog siteSwitcher-dialog dno">
<div class="header">
<h3><a href="//unix.stackexchange.com">current community</a></h3>
</div>
<div class="modal-content current-site-container">
<ul class="current-site">

태그 "a"등은 인라인이지만 페이지 구조가 사용하기 더 쉽습니다.

이 페이지에는 "다운로드"를 사용했습니다 lynx -source. 그러나 사용할 수 있는 도구는 여러 가지가 있으며 wget이러한 curl목적으로 더 일반적으로 사용됩니다.

답변2

시도 해봐강아지. 즉, OSX의 경우:

brew install https://raw.githubusercontent.com/EricChiang/pup/master/pup.rb

CSS3 선택기와 추출기를 사용하여 속성에서 값을 가져올 수 있습니다 href.

관련 정보