HTML없이 wget을 사용하여 페이지의 텍스트를 얻는 방법은 무엇입니까?


17

웹 페이지에서 wget을 시도하면 페이지가 html로 표시됩니다. HTML과 관련이없는 파일의 텍스트 만 검색 할 수 있습니까? (이것은 일부 HTML 페이지에 c 프로그램이 html 태그로 다운로드되고 있기 때문에 필요합니다. 브라우저에서 해당 파일을 열고 텍스트를 수동으로 복사하여 .c 파일을 만들어야합니다.)


1
실제로 가능하지만 페이지에서 코드를 구문 분석하고로 저장하는 함수를 작성해야합니다 .c. 어렵지는 않지만 페이지 구조에 따라 다릅니다. 링크를 제공하면 누군가가 정확한 코드로 도움을 줄 수 있습니다. 그렇지 않으면 sed또는 perl당신의 친구입니다.
러시

답변:


26

wget문서 만 검색합니다. 문서가 HTML로되어 있다면 원하는 것은 문서를 파싱 한 결과입니다.

예를 들어 lynx -dump -nolistlynx가 있다면을 사용할 수 있습니다.

lynx가볍고 간단한 웹 브라우저이며 -dump구문 분석 프로세스의 결과를 출력하는 데 사용되는 기능이 있습니다. -nolist페이지 끝에 하이퍼 링크가있는 경우 나타나는 링크 목록을 피합니다.

@Thor에서 언급했듯이 옵션 elinks도 있으며 링크 목록을 생략해야하기 때문에 이것도 사용할 수 있습니다 . -sigh- 프레임 (MTFBWY)을 사용하여 일부 사이트를 걸을 때 특히 유용 할 수 있습니다.-dump-no-references

또한 페이지가 실제로 HTML 태그가있는 C 코드가 아니라면 결과를 확인하고 C 코드 이상이 없는지 확인해야합니다.


5

이러한 다른 도구가 설치되어 있지 않고 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

다른 도구를 추가하기 만하면됩니다. 내가 선호 w3mlynx같은 콘솔 브라우저. 시스템에서 이미 사용 가능한 것을 확인하십시오.

w3m -dump website.html
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.