w3m 网站转储无换行符

w3m 网站转储无换行符

我的母语不是英语,如果有任何语法错误,请原谅我

每个人都说书籍是最好的朋友并消除无知,所以我有一个在线图书馆,但我的英语不好,所以我决定下载书的文本并使用谷歌翻译 cli 将其翻译成我的母语。

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

所以我安装了w3m cli网络浏览器并使用w3m cli网络浏览器访问上述网站,这里的输出没有换行符。 w3m

但是当我将该网站的输出存储到文件中时,出现断行

命令是

  1. w3m >file.txt 或
  2. w3m -dump <网站>> 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.html选择 grep 特有的内容,例如 HTML 标记。位于您要保留的正文上方和下方的内容。在上面的网页示例中,我使用了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

现在您已经隔离了主要内容,请使用html2text完成工作。

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

相关内容