首页 > 解决方案 > 在 curl/grep 组合中无法识别正则表达式

问题描述

我尝试使用以下 curl/grep/seed 组合从 html url 列表中获取图像 url(wget我失败了 403,但cUrl正确获取源代码):

curl -K "C:\urls.txt" | "C:\GnuWin32\bin\grep.exe" -o '(http[^\s]+(jpg|png|webp)\b)' | sed 's/\?.*//' > imglinks.txt

但我得到一个错误The command "png" is either misspelled or could not be found.

正则表达式应该是正确的:https ://regex101.com/r/Qk6A0Z/1/

如何改进此代码?

编辑:我的列表中单个 url 的源代码可以看到正在运行curl https://watchbase.com/sellita

片段,我想从中获取图片网址看起来像

<picture>
<source type="image/webp" data-srcset="https://cdn.watchbase.com/caliber/md/origin:png/sellita/sw200-1-bd.webp" srcset="https://assets.watchbase.com/img/FFFFFF-0.png" />
<img class="lazyload" data-src="https://cdn.watchbase.com/caliber/md/sellita/sw200-1-bd.png" src="https://assets.watchbase.com/img/FFFFFF-0.png" alt="Sellita caliber SW200-1"/>
</picture>

预期的输出是一个包含所有图像 url 的文件,即使是来自data-srcdata-srcset.

标签: regexwindowscurlsedgrep

解决方案


你可以试试这个xargs+curl+grep管道:

xargs -n 1 curl < "C:\urls.txt" | "C:\GnuWin32\bin\grep.exe" -Eo "http[^[:blank:]?'\"]+(jpe?g|png|gif|bmp|ico|tiff|webp)\b" > imglinks.txt

推荐阅读