Bing 首页图片合集抓取
By BenHeart
微软 Bing 首页以每日更新高质量壁纸而闻名,很多人喜欢下载作为桌面壁纸,本文介绍一种抓取 Bing 首页图片合集的思路。
抓取来源
分析思路
由于本文需要抓取所有 Bing 首页图片的合集,所以选择 http://www.bing.com/gallery/(已失效) 作为抓取来源。
用 Chrome 浏览器打开该网址,页面布局如图:
身为程序员,习惯性 F12 检查下页面元素,我发现所有图片都在 id="gird"
的 div 块中,页面结构如图:
按下 Ctrl + Shift + C 点击列表中一张图片,HTML 代码如图:
点击图片查看详情,按下 Ctrl + Shift + C 点击大图,HTML 代码如图:
由此大胆猜测,图片 url 结构为: http(s)://az619519.vo.msecnd.net/files/{img_name}_{resolution}.jpg
只要获得 {img_name} 就可以抓取对应的图片了。
打开 Network -> Doc 菜单,最开始 id="gird"
的 div 块并没有数据,说明是通过 js 请求数据并渲染出来的:
打开 Network -> JS 菜单,果然看到我想要的数据:
数据是在 js 代码中,可以通过正则表达式提取出来,再转成 json 格式,数据结构如下:
imageNames 正好对应图片 url 中的 {img_name}。至此,就可以很轻松构造图片的 url。
以第一张图为例,根据猜测的图片 url 构成规则,对应的图片 url 为:
http(s)://az619519.vo.msecnd.net/files/PlayaRoja_EN-US9542724846_1366x768.jpg
打开链接,就是第一张分辨率为 1366x768 的图片,说明刚才猜测的图片 url 构成规则是正确的。
Python 代码
参考链接