我的母语不是英语,如果有任何语法错误,请原谅我
每个人都说书籍是最好的朋友并消除无知,所以我有一个在线图书馆,但我的英语不好,所以我决定下载书的文本并使用谷歌翻译 cli 将其翻译成我的母语。
https://kpu.pressbooks.pub/political-ideologies/front-matter/introduction/
所以我安装了w3m cli网络浏览器并使用w3m cli网络浏览器访问上述网站,这里的输出没有换行符。 w3m
但是当我将该网站的输出存储到文件中时,出现断行
命令是
- w3m >file.txt 或
- 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
。
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