如何解析具有 URL 和索引的文本文件并从中下载图像?

如何解析具有 URL 和索引的文本文件并从中下载图像?

所以我明白我可以使用wget -i text_file.txt.txt 文件从 URL 下载图像,但该文件也有一些奇怪的索引。我正在尝试下载一个用于机器学习的数据集,它有不同类别的图像。

它有类似

2598 98 https://www.dermquest.com/image-library/image/5044bfcfc97267166cd620a2
2599 99 https://www.dermquest.com/image-library/image/5044bfcfc97267166cd61a48
2600 00 https://www.dermquest.com/image-library/image/5044bfcfc97267166cd61a49
2601 01 https://www.dermquest.com/image-library/image/5044bfd0c97267166cd64e01
2602 02 https://www.dermquest.com/image-library/image/5044bfd0c97267166cd64e02
2603 03 https://www.dermquest.com/image-library/image/5044bfd0c97267166cd63c9c

然后...

6577 77 https://www.dermquest.com/image-library/image/5044bfd0c97267166cd64727
6578 78 https://www.dermquest.com/image-library/image/5044bfd1c97267166cd662c7
6579 79 https://www.dermquest.com/image-library/image/5044bfd0c97267166cd65888
6580 80 https://www.dermquest.com/image-library/image/5044bfd0c97267166cd635e0
6581 81 https://www.dermquest.com/image-library/image/5044bfd1c97267166cd6676d
6582 82 https://www.dermquest.com/image-library/image/5044bfd1c97267166cd6676e
6583 83 https://www.dermquest.com/image-library/image/5044bfd0c97267166cd6472b
6584 84 https://www.dermquest.com/image-library/image/5044bfd0c97267166cd6588d

现在我想使用索引并将具有相同索引的图像下载到同一个文件...或类似的东西。

谢谢!

答案1

这看起来像是一个简单的工作cut(1)

cut -d ' ' -f 3 < url-listing.txt

您可以将其输出直接通过管道传输到标准输入wget并使用“特殊”文件名-从标准输入中读取:

cut -d ' ' -f 3 < url-listing.txt | wget -i -

答案2

您可以使用sed删除每行开头的数字:

sed -r 's/^[0-9]+//g' urls.txt > urls_without_numbers.txt

现在你可以使用 wget 和新的url_without_numbers.txt

如果出于某种原因你真的无需像上面那样创建新文件即可完成此操作

sed -r 's/^[0-9]+//g' urls.txt | wget -i /dev/stdin

如果您的行包含数字范围,请1-100尝试以下操作:

sed -r 's/^[0-9\-]+//g' urls.txt > urls_without_numbers.txt

答案3

我觉得用 awk 解决这个问题更容易。Awk 用字符串分割,然后执行命令。使用

for url in $(awk '{print $NF}' url1.txt | tr -d '\r'); do wget -L $url -O - | grep "preview-image"; done 2>&1 | grep "img src" | awk '{print $5}' | tr -d "\"" | awk -F'=' '{print $2}' &> real_urls.txt

如果行是用空格分隔的(默认),则首先打印最后一个元素。然后,删除'\r'(不应在 URL 中),然后使用 URL 作为 的参数wget。然后,在wget输出中,正确的img-tag 是通过 进行搜索grep。之后,您需要以某种方式获取 之后的内容。这可以通过删除(需要转义)然后使用 Awk 来获取 之后的内容来src完成。然后,所有内容都保存到 中。然后,您可以通过以下方式下载:"=real_urls.txt

for url in $(cat real_urls.txt); do wget "https://www.dermquest.com$url"; done

相关内容