0

我有相当数量的图像搜索结果,我想将其转换为相当数量的实际图像。

所有结果都是单个图像的 HTML 页面,每个文件都包含子字符串

<title>Google-Ergebnis für [uri]</title>

其中 [uri] 表示实际结果图像的绝对 URI (http://...(.gif|.jpg|.jpeg|.bmp))。

但我不明白如何提取 uri 以将其交给 wget。

猫imgres.html | grep "<标题>" | sed 's/<title>Google-Ergebnis für http://(.*)</title>/\\1/'

4

3 回答 3

2

grep 在这种情况下应该有所帮助:

....grep "<title>"|grep -Po "(?<=Google-Ergebnis für )[^<]*"

测试

kent$ echo "<title>Google-Ergebnis für http://foo.bar.baz/blah.png</title>"|grep -Po "(?<=Google-Ergebnis für )[^<]*"
http://foo.bar.baz/blah.png

请注意 ,实际上,您可以将两个 grep 合二为一。

于 2013-01-21T09:42:05.700 回答
2

您已接近 sed 命令:

 sed -n 's#<title>Google-Ergebnis für \(http://.*\)</title>#\1#p' imgres.html 

不过,不需要 cat、grep 和多个管道。

于 2013-01-21T14:48:05.153 回答
0

这个怎么样?我假设您的问题是您如何将从 grep/sed 中提取的内容传递给wget.

cat imgres.html | grep "<title>" | 
  sed 's#<title>Google-Ergebnis für \(http://.*\)</title>#\1#' |
wget -i -

稍微紧凑一点:

sed -n '/<title>/{s#.*<title>Google-Ergebnis für \(http://.*\)</title>.*#\1#;p}' imgres.html | 
  wget -i -

请注意使用#ins 代替通常/作为 . 的分隔符s

于 2013-01-21T09:37:08.193 回答