개행 없이 w3m 웹사이트 덤프

개행 없이 w3m 웹사이트 덤프

제 모국어는 영어가 아닙니다. 문법적 오류가 있으면 양해해 주세요.

다들 책은 좋은 친구라고 하고 무지를 없애준다고 해서 온라인 도서관을 갖고 있지만 영어가 능숙하지 않아서 책의 텍스트를 다운로드하고 Google 번역 CLI를 사용하여 모국어로 번역하기로 결정했습니다.

https://kpu.pressbooks.pub/political-ideologies/front-matter/introduction/

그래서 w3m cli 웹 브라우저를 설치하고 w3m cli 웹 브라우저를 사용하여 위 웹 사이트에 액세스했는데, 여기서 출력에는 개행 문자가 없습니다. w3m

하지만 이 웹 사이트의 출력을 파일에 저장하면 줄바꿈이 발생합니다.

명령은

  1. w3m>file.txt 또는
  2. w3m -dump <site>> file.txt 조사한 결과 각 행의 열 크기가 80 정도인 것으로 확인되었습니다. 터미널 열 크기는 80입니다. 즉, 줄바꿈 텍스트는 1개의 연속된 단락으로 변환됩니다. 그러니 나에게 해결책을 제안해주세요.

미리 감사드립니다

답변1

에서 man w3m:

   -cols num
          with  stdout  as  destination;  HTML is rendered to lines of num
          characters

답변2

내 방법은 HTML 추출입니다.
실제 .html파일을 다운로드하세요.

wget -O "kpu_intro.html" "https://kpu.pressbooks.pub/political-ideologies/front-matter/introduction/"

텍스트 편집기를 사용하거나 cat kpu_intro.htmlHTML 태그와 같은 grep 관련 콘텐츠를 선택하세요. 유지하고 싶은 본문 위, 아래의 내용입니다. 위의 웹페이지 예에서는 main id및 를 사용했습니다 /main.

grep 단어 예제

cat kpu_intro.html | grep -noP 'main id'
cat kpu_intro.html | grep -noP '/main'

그러면 각 단어의 줄 번호가 제공되며, 이 번호를 awk이 명령에 사용할 수 있습니다.

cat kpu_intro.html | awk 'NR==184, NR==228' > content.html

이제 주요 콘텐츠를 분리했으므로 다음을 사용하세요.HTML2텍스트작업을 완료하세요.

html2text --decode-errors ignore content.html ascii > kpu_intro.txt

이게 뭐야?산출좋다.

일단 완료되면 각 사이트에 맞게 적응하고 스크립트를 작성하기 쉽기 때문에 이 방법을 권장합니다.


고쳐 쓰다:

이 사이트는 "함께 스크립팅"이라는 것이 무엇을 의미하는지 보여주는 훌륭한 예를 제공합니다.
메뉴의 "목차"에는 각 섹션에 장 링크가 포함된 확장 가능한 항목이 있습니다.

라는 디렉터리를 만들고 my_temp해당 디렉터리에서 터미널을 엽니다.
다음을 복사하여 터미널에 붙여넣고 실행하지는 마세요.

xclip | grep -o -E 'href="([^"]+)"' | cut -d'"' -f2 > target_urls.txt

여기에 이미지 설명을 입력하세요.

  • "머리말"이라는 단어 위에서 마우스 버튼을 클릭한 채 아래로 스크롤합니다.
  • 왼쪽 그림과 같이 강조 표시되면 파란색 섹션의 선택 항목을 마우스 오른쪽 버튼으로 클릭하고 선택 소스 보기를 클릭합니다.
  • 소스가 열리면(오른쪽에 표시된 대로) 마우스 오른쪽 버튼을 클릭하고 "모두 선택"을 클릭합니다. 파란색 선택 항목을 다시 마우스 오른쪽 버튼으로 클릭하고 복사를 클릭합니다. ( Ctrl+A그러면 Ctrl+C그것도 효과가 있을 것입니다.)

이제 Enter를 누르고 터미널에 붙여넣은 명령을 실행하세요.

#!/bin/bash

current_url=($(<target_urls.txt))
filename_array=()

for url in "${current_url[@]}"; do

    name_extract=$(printf "$url" | sed 's|https://kpu\.pressbooks\.pub/||g' | sed 's|/|-|g')
    name_extention=$(echo ${name_extract:0:$((${#name_extract}-1))}.html)
    filename_array+=("$name_extention")

    wget -O "${filename_array[-1]}" "$url"

    line_num_above=$(cat "${filename_array[-1]}" | grep -ion 'main id' | cut -d: -f1)
    line_num_below=$(cat "${filename_array[-1]}" | grep -ion '/main' | cut -d: -f1)
    cat "${filename_array[-1]}" | awk "NR==$line_num_above, NR==$line_num_below" > temp.html

    file_name_only=${filename_array[-1]%.*}
    html2text --decode-errors ignore temp.html ascii > "$file_name_only".txt && rm temp.html

done

rm *.html target_urls.txt

exit 0

다른 이름으로 저장: url2txt.sh동일한 디렉터리에 저장합니다.
모드 변경 실행 파일: chmod +x url2txt.sh
실행:./url2txt.sh

관련 정보