웹페이지에서 wget을 시도하면 페이지가 html로 표시됩니다. 연관된 html 없이 파일의 텍스트만 검색할 수 있습니까? (일부 HTML 페이지에는 html 태그와 함께 다운로드되는 c 프로그램이 포함되어 있으므로 이 작업이 필요합니다. .c 파일을 만들려면 브라우저에서 해당 프로그램을 열고 수동으로 텍스트를 복사해야 합니다.)
답변1
wget
문서만 검색합니다. 문서가 HTML로 되어 있는 경우 원하는 것은 문서를 구문 분석한 결과입니다.
lynx -dump -nolist
예를 들어, 주변에 스라소니가 있다면 를 사용할 수 있습니다 .
lynx
-dump
파싱 프로세스의 결과를 출력하는 데 사용되는 기능을 갖춘 가볍고 간단한 웹 브라우저입니다 . -nolist
페이지에 하이퍼링크가 있는 경우 표시되는 링크 목록을 마지막에 피합니다.
@Thor가 언급한 것처럼 elinks
옵션도 있으므로 -dump
( -no-references
링크 목록을 생략해야 함) 이 용도로도 사용할 수 있습니다. -sigh-frame(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