我希望你能帮助我wget
,我想从库存图片网站下载所有图片,https://pixabay.com/
但是当我在终端输入代码时,什么都没有下载,没有jpg
,没有zip
。
我用了这个代码:
wget -r -A jpg https://pixabay.com/
我有时会使用jpg
或zip
取决于网站。我尝试过更多网站:
http://www.freepik.com/
http://www.freeimages.com/
http://all-free-download.com/
根本没有下载。
答案1
这是工作命令:
wget -U "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:49.0) Gecko/20100101 Firefox/49.0" -nd -r --level=1 -e robots=off -A jpg,jpeg -H http://pixabay.com/
-U "..."
:该网站返回 HTTP 错误 403(禁止),因为它仅允许给定列表的 User-Agent 访问其页面。您必须规定常用浏览器(firefox、chrome 等)的 User-Agent。我给您的是一个工作示例。-nd
(无目录) 来自 man:“递归检索时不要创建目录层次结构。”-e robots=off
:不遵循 robot.txt 排除-H
:启用跨主机检索文件(此处 pixabay.com 和 cdn.pixabay.com 被视为不同的主机)
如果有某种速率限制机制,请添加以下选项--wait 1
答案2
首先,他们似乎不希望你下载他们的照片。请在行动时考虑这一点。
从技术上讲,您可以使用自定义标签/属性下载图片。您可以检查下载 html 源代码的自定义属性。不幸的是,wget(目前)不支持任意自定义标签。基本上您有两个选择:
- 按照以下建议使用此功能扩展 wgethttps://unix.stackexchange.com/questions/258835/wget-follow-custom-url-attributes
- 下载源代码并编写您自己的后处理器。
在第二种情况下,您必须下载索引文件并提取图像 url-s。您需要记住他们不希望您使用 wget,因此他们禁止其用户代理字符串。您必须伪造一些东西,例如 mozilla。如果您使用的是 Linux,则类似以下内容会列出图片:
wget -O --user-agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:21.0) Gecko/20100101 Firefox/21.0" "https://pixabay.com/en/photos/?q=cats&hp=&image_type=&cat=&min_width=&min_height=" | grep -o 'https://cdn.pixabay[^" ]*'
您只需将其输入回 wget 即可。
..... | xargs wget
编辑:@vera 的解决方案也很好,但是在图像搜索的情况下,它似乎会下载一小部分图片。[抱歉,没有足够的积分来评论:)]