使用curl获取必应图片搜索首图源链接无输出,求问题排查
问题原因及解决办法
为什么你的命令没有输出?
Bing图片的HTML页面结构已经更新,你之前依赖的<a class="thumb">元素选择器已不存在,导致grep无法匹配到任何内容,自然没有输出。
解决步骤
1. 提取首张缩略图链接(用正则快速实现)
现在Bing图片的缩略图链接通常存放在img标签的data-src属性中,用以下命令可直接提取首张图片的链接:
curl -s "https://www.bing.com/images/search?q=cat&form=HDRSC2&first=1&tsc=ImageBasicHover" | grep -o 'data-src="[^"]*"' | head -n1 | cut -d'"' -f2
grep -o 'data-src="[^"]*"':匹配所有带data-src属性的片段head -n1:仅保留第一个结果(对应首张图片)cut -d'"' -f2:剥离属性名,只保留纯链接内容
2. 更稳定的HTML解析方式(推荐)
正则处理HTML容易因页面结构变动失效,推荐使用专门的HTML解析工具pup来精准定位元素:
# 先安装pup(Ubuntu:apt install pup;Mac:brew install pup) curl -s "https://www.bing.com/images/search?q=cat&form=HDRSC2&first=1&tsc=ImageBasicHover" | pup 'img[data-src] attr(data-src)' | head -n1
该命令会直接提取首张图片的data-src属性值,无需额外处理。
注意事项
如果需要获取原图链接,Bing会将其隐藏在跳转链接或页面内嵌的JSON数据中,这时候可能需要模拟浏览器请求或解析JSON结构;若仅需缩略图,上述方法完全够用。
内容的提问来源于stack exchange,提问作者user19447140
相关产品推荐
相关产品推荐

