xmllint
출력을 얻는 방법에문서?
thufir@dur:~/xmllint$
thufir@dur:~/xmllint$ xmllint --html http://www.skynet.be/nieuws-sport/weer/mijn-weer?cityId=6450 --xpath '//div[@class = "tides"]' - 2>/dev/null
<div class="tides">
<div class="weather-sprite icon st_nl" title="Marées Oostende"></div>
<p>Hoogtij: <strong>10:28</strong> <strong>23:11</strong></p>
<p>Laagtij: <strong>04:44</strong> <strong>17:13</strong></p>
<div class="weather-sprite icon anv_nl clearFlt" title="Marées Anvers"></div>
<p>Hoogtij: <strong>00:41</strong> <strong>13:06</strong></p>
<p>Laagtij: <strong>07:11</strong> <strong>07:11</strong></p>
</div><div class="tides">
<div class="weather-sprite icon st_nl" title="Marées Oostende"></div>
<p>Hoogtij: <strong>11:31</strong> <strong></strong></p>
<p>Laagtij: <strong>05:48</strong> <strong>18:10</strong></p>
<div class="weather-sprite icon anv_nl clearFlt" title="Marées Anvers"></div>
<p>Hoogtij: <strong>01:42</strong> <strong>14:02</strong></p>
<p>Laagtij: <strong>08:20</strong> <strong>08:20</strong></p>
</div>
^C
thufir@dur:~/xmllint$
멈추면 죽여야 합니다. 아름다운 매뉴얼:
--output FILE Define a file path where xmllint will save the result of parsing. Usually the programs build a tree and save it on stdout, with this option the result XML instance will be saved onto a file.
하지만 제대로 작동하지 못했습니다. 콘솔의 출력은 전혀 필요하지 않으며 파일 생성에만 관심이 있습니다. html
처리를 위해 정리하는 것입니다 saxon
.
답변1
--html
옵션 을 사용할 때 생각하는 것xmllint
--format
, 및 같은 일부 다른 옵션은 무시됩니다 --output
. (시험을 마친libxml2
v2.9.4는 macOS High Sierra와 함께 제공되며 v2.9.10은스스로 만든.)
대신, xmllint
출력을 파일에 쓰 려면 >
("보다 큼") 리디렉션 연산자를 사용하여 표준 출력 스트림을 리디렉션할 수 있습니다.
통사론
xmllint --html input.html > output.html
예
xmllint --html --xpath "//p" http://example.com > output.html 2>/dev/null
옵션/매개변수:
--html
— 입력을 HTML로 구문 분석합니다.--xpath "//p"
— XPath 쿼리는<p>
입력에서 모든 태그를 선택합니다.http://example.com
— 입력 파일(이 경우 지정된 URL에서 직접 다운로드됨)> output.html
— 표준 출력 스트림(stdout)을 지정된 파일로 리디렉션합니다.2>/dev/null
— 선택 사항: 터미널을 빈 장치( )로 리디렉션하여/dev/null
터미널에서 표준 오류 스트림(stderr)을 억제합니다 .
(바라보다이 답변훌륭한 출력/오류 리디렉션 치트 시트입니다. )
HTTPS
xmllint
HTTPS는 현재 지원되지 않는 것 같습니다(예 :이 문제). 대신 다음과 같은 다른 유틸리티를 사용할 수 있습니다.curl
또는wget
먼저 파일을 다운로드한 다음 ("파이프"/"파이프") 제어 연산자와 ("하이픈/빼기")를 파일 인수로 xmllint
사용하여 표준 입력으로 파이프합니다 .|
-
xmllint
curl --silent "https://example.com" | xmllint --html --xpath "//p" - > output.html 2>/dev/null
옵션/매개변수:
--silent
또는-s
-curl
진행/오류 메시지를 억제합니다(그렇지 않으면xmllint
파서에 의해 처리될 수 있음)."https://example.com"
— 입력 파일을 다운로드하고curl
(이 경우 HTTPS를 통해) 에 전달합니다xmllint
. (&
URL에 다른 특수 문자가 포함된 경우 따옴표를 사용하십시오.)|
— 이전 명령의 표준 출력( )을 다음 명령의curl
표준 입력( )으로 파이프합니다.xmllint
--html
—xmllint
입력을 구문 분석하여 HTML로 구문 분석합니다.--xpath "//p"
— XPath 쿼리는<p>
입력에서 모든 태그를 선택합니다.-
— 파일이나 URL이 아닌 표준 입력 스트림(stdin)(즉, 출력)에서xmllint
입력을 가져옵니다.curl
> output.html
—xmllint
표준 출력 스트림(stdout)을 지정된 파일로 리디렉션합니다.2>/dev/null
— 선택 사항:xmllint
터미널을 빈 장치( )로 리디렉션하여 터미널에서 표준 오류 스트림(stderr)을 억제합니다/dev/null
.
(바라보다이 답변제어/리디렉션 연산자의 좋은 목록입니다. )