• Stars
    star
    143
  • Rank 257,007 (Top 6 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created over 5 years ago
  • Updated over 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

豆瓣API服务

豆瓣API服务

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

缘起

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

安装&启动

代码目录结构

  • 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

More Repositories

1

mind-map

一个还算强大的Web思维导图。A relatively powerful web mind map.
JavaScript
5,290
star
2

code-run

一个代码在线编辑预览工具,类似codepen、jsbin、jsfiddle等。
JavaScript
501
star
3

tiny_whiteboard

一个在线小白板,类似excalidraw。
JavaScript
251
star
4

VideoTimeLine

一个简单的Vue2视频时间轴组件
Vue
97
star
5

markjs

一个插件化的多边形标注库
JavaScript
89
star
6

snow

看,下雪了~
JavaScript
83
star
7

web_map_demo

Web地图demo,一个简单的2D地图加载器,支持拖动、缩放、显示叠加物、搜索。
Vue
83
star
8

lx-doc

理想文档。定位于个人和小团队的在线云文档。支持思维导图、白板、流程图、PPT、电子表格等
JavaScript
67
star
9

canvas-editor-demo

一个基于canvas实现的富文本编辑器demo,仅仅是demo。
JavaScript
62
star
10

simple-flow-chart

一个简单的流程图设计器,基于Vue2。
Vue
48
star
11

markdown_editor_sync_scroll_demo

Markdown编辑器精确同步滚动demo
HTML
21
star
12

tree_layout

绘制一棵漂亮的树,可用于绘制思维导图。
JavaScript
18
star
13

front-article

小前端【街角小林】所有的前端原创文章。
15
star
14

simple-novice-guide

一个简单的新手引导库
TypeScript
14
star
15

AssociationLineDemo

图形之间的关联线连接demo。
HTML
13
star
16

json-tree-view

一个简洁的json格式化插件。
JavaScript
12
star
17

VNode_visualization

虚拟DOM的diff算法动画演示
JavaScript
11
star
18

visual-drag-platform-fit-demo

可视化拖拽平台的页面屏幕适应方案
Vue
10
star
19

web_articles

前端优质文章集锦
8
star
20

simple-word-cloud

一个简单的词云库
JavaScript
8
star
21

wanglin2

7
star
22

PolygonEditDemo

一个简单的多边形编辑器demo
Vue
6
star
23

handPaintedStyle

手绘风格图形的简单实现
Vue
5
star
24

download-image-demo

前端下载图片的N种方法
Vue
5
star
25

VNode-Demo

虚拟dom的diff demo
JavaScript
4
star
26

vite-demo

JavaScript
4
star
27

ES_Modules_CDN

支持ES模块的cdn服务demo。
JavaScript
3
star
28

simple-canvas-editor

一个使用canvas实现的简单富文本编辑器。
HTML
3
star
29

pieChart

一个简单的饼图
Vue
3
star
30

ComponentLibraryImport

组件库实现按需引入的几种方式
Vue
3
star
31

literature-articles

个人原创的文学文章。
CSS
3
star
32

vue_v0.11_analysis

vue0.11版本源码阅读系列文章
JavaScript
2
star
33

simulateCSSBackgroundInCanvas

在canvas中模拟css的background相关样式
JavaScript
2
star
34

nice-doc

个人文档平台
2
star
35

learn_vue_2.6.0

Vue2.6.1源码阅读系列
JavaScript
2
star
36

textUnderline

文本划线的极简实现
Vue
2
star
37

canvas-in-action

Canvas实战系列文章。
CSS
2
star
38

mind-map-themes

提供更多的mind-map主题。
1
star
39

es5-es5-inherit-example

ES6和ES5继承的示例
JavaScript
1
star
40

collect

个人收藏夹
1
star
41

vue_dynamic_import_component

vue动态引入组件demo
JavaScript
1
star
42

playground

Vue3代码在线运行工具
JavaScript
1
star
43

esm_cjs

JavaScript
1
star
44

hannuota

汉诺塔小游戏
Vue
1
star
45

tiny_whiteboard_demo

tiny_whiteboard在线demo,非可读仓库,请勿关注。
JavaScript
1
star
46

text_diff_demo

文本diff demo
JavaScript
1
star
47

code-run-online

CodeRun在线示例
JavaScript
1
star
48

vue_components

一个monorepo类型的组件库
JavaScript
1
star
49

lx-doc-site

JavaScript
1
star
50

canvas-demos

Vue
1
star
51

whbm-nav

新开源系列:五花八门导航。
Vue
1
star
52

mind_map_test

无意义仓库,仅用于测试。
HTML
1
star