Skip to content

wanglin2/douban_api

Repository files navigation

豆瓣API服务

通过phantom无头浏览器爬取豆瓣页面,分析页面结构来解析并输出json类型数据

缘起

豆瓣之前有提供官方开放API,虽然每天调用接口有上限,但是至少可以使用,后来不知为何突然关闭了且不允许个人申请。但是笔者有部分个人项目使用相关的接口,所以突然关闭给笔者带来了不小的困扰,难道又要回到以前刀耕火种的年代吗?显然不能接受,在Google and 百度无果后决定自己写个相关的爬虫服务

安装&启动

  • node >= 8.9.2
  • 安装phantom无头浏览器,安装文档
  • git clone git@github.com:wanglin2/douban_api.git
  • cd douban_api
  • npm i
  • npm start

代码目录结构

  • config: 项目的配置信息
  • middlewares: 中间件函数
  • controllers: 路由转发
  • models: 接口逻辑
  • routes: 路由
  • utils: 公共工具函数
  • app.js: 入口文件

路由区分

  • /book 书籍部分接口
  • /movie 影视部分接口
  • /music 音乐部分接口

接口详解

书籍

根据关键词搜索书籍列表

  • 描述:只有概要信息。豆瓣分页比较迷,如果页数较大的情况下是不会透出所有页数的,所以该接口统一不透出总页数数据,所以当请求某一页没有数据时那之前的一页应该就是最后一页。平均请求耗时:5s
  • 接口:/book/list?key=&page=
  • ---key:搜索关键词
  • ---page:当前请求页数
  • 响应实例:
{
    "status": true,
    "msg": "获取成功",
    "time": "5.364s",
    "data": [
        {
            "cover_link": "https://book.douban.com/subject/4913064/",
            "cover": "https://img3.doubanio.com/view/subject/l/public/s29053580.jpg",
            "rating": "9.3",
            "title": "活着",
            "author": "余华",
            "press": "作家出版社",
            "date": "2012-8-1",
            "price": "20.00元"
        }, 
        {
            "cover_link": "https://book.douban.com/subject/1029791/",
            "cover": "https://img3.doubanio.com/view/subject/l/public/s1074291.jpg",
            "rating": "8.7",
            "title": "许三观卖血记",
            "author": "余华",
            "press": "南海出版公司",
            "date": "1998-9",
            "price": "16.80元"
        }
    ]
}

获取某本书籍的详细信息

  • 描述:获取某本书籍的详细信息,url来自list或list_pro接口。平均请求耗时:6s
  • 接口:/book/detail?url=
  • ---url:豆瓣详情页URL
  • 响应实例:
{
    "status": true,
    "msg": "获取成功",
    "time": "6.663s",
    "data": {
        "title": "活着",
        "pic": "https://img3.doubanio.com/view/subject/l/public/s29053580.jpg",
        "作者": "余华",
        "出版社": "作家出版社",
        "出版年": "2012-8-1",
        "页数": "191",
        "定价": "20.00元",
        "装帧": "平装",
        "丛书": "余华作品(2012版)",
        "ISBN": "9787506365437",
        "rating": "9.3",
        "content_intro": "《活着(新版)》讲述了农村人福贵悲惨的人生遭遇。福贵本是个阔少爷,可他嗜赌如命,终于赌光了家业,一贫如洗。他的父亲被他活活气死,母亲则在穷困中患了重病,福贵前去求药,却在途中被国民党抓去当壮丁。经过几番波折回到家里,才知道母亲早已去世,妻子家珍含辛茹苦地养大两个儿女。此后更加悲惨的命运一次又一次降临到福贵身上,他的妻子、儿女和孙子相继死去,最后只剩福贵和一头老牛相依为命,但老人依旧活着,仿佛比往日更加洒脱与坚强。《活着(新版)》荣获意大利格林扎纳•卡佛文学奖最高奖项(1998年)、台湾《中国时报》10本好书奖(1994年)、香港“博益”15本好书奖(1994年)、第三届世界华文“冰心文学奖”(2002年),入选香港《亚洲周刊》评选的“20世纪中文小说百年百强”、中国百位批评家和文学编辑评选的“20世纪90年代最有影响的10部作品”。",
        "author_intro": "余华,1960年出生,1983年开始写作。至今已经出版长篇小说4部,中短篇小说集6部,随笔集4部。主要作品有《兄弟》《活着》《许三观卖血记》《在细雨中呼喊》等。其作品已被翻译成20多种语言在美国、英国、法国、德国、意大利、西班牙、荷兰、瑞典、挪威、希腊、俄罗斯、保加利亚、匈牙利、捷克、塞尔维亚、斯洛伐克、波兰、巴西、以色列、日本、韩国、越南、泰国和印度等国出版。曾获意大利格林扎纳·卡佛文学奖(1998年)、法国文学和艺术骑士勋章(2004年)、中华图书特殊贡献奖(2005年)、法国国际信使外国小说奖(2008年)等。",
        "dirs": ["中文版自序", "韩文版自序", "日文版自序", "英文版自序", "麦田新版自序", "活着", "外文版评论摘要"],
        "tags": ["余华", "活着", "人生", "人性", "中国文学", "小说", "社会", "当代文学"]
    }
}

影视

根据关键词搜索影视列表

  • 描述:描述同书籍对应接口。平均请求耗时:5s
  • 接口:/movie/list?key=&page=
  • ---key:搜索关键词
  • ---page:当前请求页数
  • 响应实例:
{
    "status": true,
    "msg": "获取成功",
    "time": "5.372s",
    "data": [
        {
            "cover_link": "https://movie.douban.com/subject/4864908/",
            "cover": "https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2530513100.jpg",
            "rating": "7.2",
            "title": "影‎ ",
            "country": "中国大陆",
            "type": ["香港", "剧情", "动作", "武侠", "古装", "三国·荆州", "荆州保卫战"],
            "duration": "116分钟",
            "year": "2018",
            "actors": ["张艺谋", "邓超", "孙俪", "郑恺", "王千源", "王景春", "胡军", "关晓彤", "吴磊"]
        }, 
        {
            "cover_link": "https://movie.douban.com/subject/24719063/",
            "cover": "https://img1.doubanio.com/view/photo/s_ratio_poster/public/p2262236348.jpg",
            "rating": "8.0",
            "title": "烈日灼心‎ ",
            "country": "中国大陆",
            "type": ["剧情", "犯罪", "悬疑", "不法之徒", "法外之徒"],
            "duration": "139分钟",
            "year": "2015",
            "actors": ["曹保平", "邓超", "段奕宏", "郭涛", "王珞丹", "吕颂贤", "高虎", "白柳汐", "杜志国"]
        }
    ]
}

获取影视的详细信息

  • 描述:描述同书籍对应接口。平均请求耗时:6s
  • 接口:/movie/detail?url=
  • ---url:豆瓣详情页URL
  • 响应实例:
{
    "status": true,
    "msg": "获取成功",
    "time": "9.082s",
    "data": {
        "title": "影(2018)",
        "pic": "https://img3.doubanio.com/view/photo/s_ratio_poster/public/p2530513100.jpg",
        "导演": "张艺谋",
        "编剧": "李威/张艺谋",
        "主演": "邓超/孙俪/郑恺/王千源/王景春/胡军/关晓彤/吴磊/封柏更多...",
        "类型": "剧情/动作/武侠/古装",
        "制片国家/地区": "中国大陆/香港",
        "语言": "汉语普通话",
        "上映日期": "2018-09-30(中国大陆)/2018-09-06(威尼斯电影节)",
        "片长": "116分钟",
        "又名": "三国·荆州/荆州保卫战/Shadow",
        "IMDb链接": "tt6864046",
        "rating": "7.2",
        "content_intro": "战乱年代,群雄并起。割据一方的沛国安于现状,一任国主沛良(郑恺饰)慨歌太平。要冲之地境州早年为强邻炎国借去,而今据而不还。沛国都督子虞(邓超饰)前往讨伐,却中了对方大将杨苍(胡军饰)的拖刀,重伤不愈。心有不甘的子虞暗中派出替身境州(邓超饰)假扮自己,总理军政,内则使令夫人小艾(孙俪饰)襄助。真假子虞切磋战法,寻求破解杨苍刀法的绝技。而另一方面,沛良恼怒子虞私自约战杨苍,不惜将妹妹青萍(关晓彤饰)嫁于杨苍之子为妾媾和。淫雨霏霏,连日不开。境州上空,杀戮与机谋纠缠撕裂……本片根据朱苏进的剧本《三国•荆州》改编。©豆瓣",
        "acting_staff": ["张艺谋", "邓超", "孙俪", "郑恺", "王千源", "王景春"],
        "imgs": ["https://img3.doubanio.com/view/photo/sqxs/public/p2515009651.jpg", "https://img3.doubanio.com/view/photo/sqxs/public/p2464122341.jpg"]
    }
}

音乐

根据关键词搜索音乐列表

  • 描述:描述同书籍对应接口。平均请求耗时:5s
  • 接口:/music/list?key=&page=
  • ---key:搜索关键词
  • ---page:当前请求页数
  • 响应实例:
{
    "status": true,
    "msg": "获取成功",
    "time": "6.561s",
    "data": [
        {
            "cover_link": "https://music.douban.com/subject/1403307/",
            "cover": "https://img3.doubanio.com/view/subject/m/public/s3750422.jpg",
            "rating": "9.2",
            "title": "范特西 Fantasy",
            "artist": "周杰伦",
            "date": "2001-09-14",
            "album": "专辑",
            "medium": "CD",
            "schools": "流行"
        }, 
        {
            "cover_link": "https://music.douban.com/subject/1401853/",
            "cover": "https://img3.doubanio.com/view/subject/m/public/s3737076.jpg",
            "rating": "8.1",
            "title": "七里香 Common Jasmin Orange",
            "artist": "周杰伦",
            "date": "2004",
            "album": "专辑",
            "medium": "CD",
            "schools": "流行"
        }
    ]
}

获取音乐的详细信息

  • 描述:描述同书籍对应接口。平均请求耗时:6s
  • 接口:/music/detail?url=
  • ---url:豆瓣详情页URL
  • 响应实例:
{
    "status": true,
    "msg": "获取成功",
    "time": "9.652s",
    "data": {
        "title": "七里香",
        "pic": "https://img3.doubanio.com/view/subject/m/public/s3737076.jpg",
        "又名": "CommoJasmiOrage",
        "表演者": "周杰伦",
        "流派": "流行",
        "专辑类型": "专辑",
        "介质": "CD",
        "发行时间": "2004",
        "出版者": "上海声像出版社",
        "唱片数": "1",
        "条形码": "9787799415932",
        "ISRC(中国)": "",
        "其他版本": "周杰伦:七里香(精装版,附赠2首最新MV)(全部)",
        "rating": "8.1",
        "content_intro": "從第一張JAY同名專輯、第二張《范特西》、第三張《八度空間》到第四張《葉惠美》專輯,周杰倫每一次的專輯名稱都給了歌迷許多想像空間,也給了大家許多驚嘆號,這一次第五張專輯周杰倫首次以主打歌名「七里香」做為專輯名稱,周杰倫表示因為對這一次專輯的音樂充滿自信,希望大家能把注意力焦點放在音樂上,將話題回歸到音樂上。  新歌「七里香」是帶著東方氣息的抒情搖滾曲風,周杰倫的最佳搭檔方文山在「七里香」歌曲裡首度以「作詩」的方式填詞,創作出一首詩意濃厚的現代詩情歌。而此曲之MV特別遠赴日本的群馬縣高崎市拍攝。",
        "songs": ["1.我的地盘", "2.七里香", "3.借口", "4.外婆", "5.将军", "6.搁浅", "7.乱舞春秋", "8.困兽之斗", "9.园游会", "10.止战之殇"]
    }
}

其他

跨域配置

  • 修改/config/config.js文件中的corsWhiteList字段,在数组中增加需要跨域的域名,如:http://lxqnsys.com

特别注意

  • 因为是通过爬取页面来抓取数据,所以会有以下问题:
  • --数据较慢,且有一定失败概率
  • --因为是通过分析页面结构来输出数据,页面结构很容易变动,所以相当不稳定,所以使用场景慎重考虑

开源许可

  • MIT License

Packages

No packages published