웹페이지에서 wget을 시도하면 html 페이지가 표시됩니다. 연관된 HTML 없이 파일의 텍스트만 검색할 수 있습니까? (c 프로그램이 포함된 일부 HTML 페이지는 html 태그를 통해 다운로드되었기 때문에 이는 나에게 필요했습니다. .c 파일을 만들려면 브라우저에서 해당 페이지를 열고 수동으로 텍스트를 복사해야 했습니다.)
답변1
wget
문서만 검색됩니다. 문서가 HTML 형식인 경우 원하는 것은 문서를 구문 분석한 결과입니다.
예를 들어, lynx -dump -nolist
주변에 살쾡이가 있는 경우 사용할 수 있습니다.
lynx
-dump
구문 분석 프로세스의 결과를 출력하는 기능을 갖춘 가볍고 간단한 웹 브라우저입니다 . -nolist
페이지에 하이퍼링크가 있는 경우 나타나는 마지막 부분에 나타나는 링크 목록을 피하세요.
@Thor가 언급했듯이 elinks
옵션도 있으므로 이 목적으로 사용할 수도 있습니다 -dump
( -no-references
링크된 목록은 생략해야 함). -sigh-frames(MTFBWY)를 사용하여 특정 사이트를 지나갈 때 특히 유용할 수 있습니다.
또한 페이지가 실제로 HTML 마크업이 포함된 C 코드가 아닌 이상 결과를 확인하여 C 코드 외에는 아무것도 없는지 확인해야 한다는 점을 명심하세요.
답변2
이러한 다른 도구가 설치되어 있지 않고 wget만 설치되어 있고 페이지에 서식이 없고 소스 코드나 파일 목록과 같은 일반 텍스트와 링크만 있는 경우 sed를 사용하여 다음과 같이 HTML을 제거할 수 있습니다. :
wget -qO- http://address/of/page/you/want/to/view/ | sed -e 's/<[^>]*>//g'
이는 wget을 사용하여 페이지 소스를 STDOUT으로 덤프하고 sed를 사용하여 < > 쌍과 그 사이의 모든 항목을 제거합니다.
그런 다음 >를 사용하여 sed 명령의 출력을 생성하려는 파일로 리디렉션할 수 있습니다.
wget -qO- http://.../ | sed -e 's/<[^>]*>//g' > downloaded_file.txt
참고: 파일에 원하지 않는 추가 공백이 있을 수 있습니다(예: 여러 열로 들여쓰기된 줄).
텍스트 편집기를 사용하여 파일을 구성하는 것이 아마도 가장 쉬울 것입니다(또는 C 소스 코드를 다운로드한 경우 소스 포맷터를 사용).
파일의 모든 줄에서 동일한 간단한 작업을 수행해야 하는 경우 sed 명령에 명령을 포함하여 이를 수행할 수 있습니다(여기서 선행 공백 하나 제거).
wget -qO- http://.../ | sed -e 's/<[^>]*>//g;s/^ //g' > downloaded_stripped_file.txt
답변3
다른 도구를 추가하면 됩니다. 내가 선호하는 점은 콘솔과 유사한 브라우저 w3m
라는 것입니다 . lynx
시스템에 이미 어떤 기능이 있는지 확인하고 싶을 수도 있습니다.
w3m -dump website.html