暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

豆瓣图书封面

生有可恋 2022-06-18
2857

豆瓣是一家以书影音起家的网站,亦是一个在线数据库,提供关于书籍、电影、电视、音乐、游戏、舞台剧等作品的信息,无论描述还是评论都由用户提供。早期的douban-python API模块可以获取图书信息,后来豆瓣的图书API服务关闭了,不再对外提供服务。


老的图书API返回的图书封面的URL格式如下:

    http://img1.douban.com/spic/s4524240.jpg
    http://img1.douban.com/mpic/s4524240.jpg
    http://img1.douban.com/lpic/s4524240.jpg

    分别代表三个尺寸的图书封面,大、中、小。其中图像服务器有多台,从img1至img3不等。早期的url还是http的,现在所有的图像服务器全部换成了https协议。


    新的图像格式为:

      https://img9.doubanio.com/view/subject/s/public/s4524240.jpg
      https://img9.doubanio.com/view/subject/m/public/s4524240.jpg
      https://img9.doubanio.com/view/subject/l/public/s4524240.jpg

      其中图像服务器有多台,分别为:

      • img1.doubanio.com

      • img2.doubanio.com

      • img3.doubanio.com

      • img9.doubanio.com


      如果早期开放API时获取的数据都写到了本地数据库,图书的封面图像的文件名并没有变,变更URL后还可以访问。


      比如图书信息:

      • https://img9.doubanio.com/view/subject/l/public/s9003835.jpg


      但是光有图片信息并不能爬取图片,比如 s9003835.jpg 可以作为主键对图书封面进行唯一识别,但豆瓣的图像服务器有多个,图像的链接并不是一直稳定存在的。


      比如这次访问时可能是:

      • https://img9.doubanio.com/view/subject/l/public/s9003835.jpg


      下次访问时可能是:

      • https://img3.doubanio.com/view/subject/l/public/s9003835.jpg


      所以并不能硬编码调用图书的封面图像,除非把图像爬到本地。好在有很多人从豆瓣爬图书数据,数据源都是豆瓣的,所以图像的文件名如果没变的话可以直接替换。如果在网上找到基于豆瓣的数据提供的图书API,可以复用以前爬取的数据,替换URL即可。如下是替换第三方的图片资源后的效果:




      在设计API时,如果网址的结构固定就很容易被爬虫爬取数据。豆瓣的应对方式是随机加时效限制。


      比如使用多个域名来解析图像服务,并且不同的图书用不同的域名。在多个域名间跳转,从而加大爬虫爬取难度。为了防止对方盗图,图像的URL在一段时间之后会失效,就算首次爬取成功,过一段时间再次访问图像的URL也会失败。


      个人提供的API一般不会做这么多限制,如果复用的是豆瓣的数据,很容易被爬取。


      文章转载自生有可恋,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

      评论