Bash _ wget _html2txt

问题描述 投票:0回答:1

我被要求使用wget下载保存在文件中的多个URL并将它们存储在另一个文件夹中。所以我使用了这个命令:

wget -E -i url.txt -P ~/Desktop/ProjectM2/data/crawl

但问题1,文件必须命名如下:

1.html
2.html
3.html
..

我尝试过曼尼的东西,但我还是做不到。

问题2我不知道如何使用从html2txt -utf8.html.txt在一个命令中更改所有这些文件并保留数字

1.txt
2.txt
3.txt
..

谢谢

bash wget
1个回答
0
投票

如果在你的情况下url.txt中的网址顺序很重要,也就是说,1.html应该包含第一个网址的数据,那么2.html应该对应于第二个网址,依此类推,然后你可以逐个处理网址。

以下脚本为每个URL采取所需的操作:

#!/bin/bash

infile="$1"

dest_dir="~/Desktop/ProjectM2/data/crawl"

# create html and txt dir inside dest_dir
mkdir -p "$dest_dir"/{html,txt}

c=1
while IFS='' read -r url || [[ -n "$url" ]]; do

    echo "Fetch $url into $c.html"
    wget -q -O "$dest_dir"/html/$c.html "$url"

    echo "Convert $c.html to $c.txt"
    html2text -o "$dest_dir"/txt/$c.txt "$dest_dir"/html/$c.html

    c=$(( c + 1 ))

done < "$infile"

该脚本记录了一个输入文件,在本例中为url.txt。它在目标目录html下创建了两个目录(txt~/Desktop/ProjectM2/data/crawl),以便更好地组织生成的文件。我们在一个while循环(url.txt)的帮助下逐行读取文件Read file line by line中的url。使用wget,您可以使用-O选项指定所需的输出文件名,因此您可以根据需要命名文件,在您的情况下是序列号。 -q选项用于从命令行中删除wget消息。在html2text中,您可以使用-o指定输出文件。

© www.soinside.com 2019 - 2024. All rights reserved.