HTML 파일에서 선택한 태그 가져오기

HTML 파일에서 선택한 태그 가져오기

페이지 소스가 있고 이 파일에서 모든 태그를 가져와야 합니다. 순서가 중요합니다. 외부 스크립트와 인라인 스크립트가 모두 필요합니다. 태그가 출력에 포함되어야 합니다. 콘솔 리눅스 도구를 찾고 있어요.

검색을 시도했지만 아무것도 찾을 수 없었습니다. jQuery를 사용하여 이 정보를 얻고 파일에 붙여넣었습니다. 하지만 이 출력에는 이상한 인코딩이 있으므로 전통적으로 구문 분석해야 합니다.

예: 입력:

<html>
  <head>
    <script src="script1.js"></script>
    <script src="script2.js"></script>
    <script>alert('hello');</script>
  </head>
  <body>
    <div id="main">...</div>
    <script src="footer.js">
  </body>
</html>

산출:

<script src="script1.js"></script>
<script src="script2.js"></script>
<script>alert('hello');</script>
<script src="footer.js">

두 번째 예에서는 src 속성만 출력합니다.

script1.js
script2.js
inline script 
footer.js

답변1

grep해당 항목과 일치하는 매개변수( )를 사용할 수 있습니다 -o. 예:

$ grep -o "<[^>]*>" <(curl -s http://example.com/)

그러면 주문을 포함한 모든 HTML 태그가 인쇄됩니다.

<script>태그 만 포함하려면 다음을 시도해 보세요( index.html파일로 변경).

$ grep -Eo "<script.*(</script>|>)" index.html

(속성에서) 파일 이름만 가져오려면 src다른 를 추가하여 확장할 수 있습니다 grep. 예:

$ grep -Eo "<script.*(</script>|>)" index.html | grep -o '"[^"]*"' | tr -d '"'

위 구문은 HTML 코드의 다양한 변형에 도움이 되지 않으므로 더 복잡한 솔루션의 경우정규식을 사용하여 HTML 구문 분석일반적으로 권장되지 않으므로 적절한 도구(선호하는 언어 또는 다음을 확인)를 사용해야 합니다.쉘 도구).

답변2

귀하가 이미 답변을 수락했다는 것을 알고 있지만, 조사해 볼 수도 있다는 점을 덧붙이고 싶습니다.xpath.

이는 특히 xml 스타일 데이터를 위한 것입니다.

귀하의 경우 이에 대한 xpath는 다음과 같습니다.

//script

여기HTML을 구문 분석하기 위해 xpath를 사용하는 또 다른 예이기도 합니다.

관련 정보