随笔 - 214  文章 - 12  评论 - 40  阅读 - 38万

图书信息库完整解决方案(六)豆瓣接口

为了综合当当和豆瓣的图书详情数据,这里在图书信息从当当抓取成功后,根据isbn信息再从豆瓣获取一次图书详情数据。

相关豆瓣图书的接口地址为:

https://developers.douban.com/wiki/?title=book_v2#get_isbn_book

然后将豆瓣与当当的图书详情进行比对,豆瓣如果存在对应的字段则以豆瓣的为准:

复制代码
 1 private boolean compareBookInfo(BookInfo srcInfo, BookInfo dstInfo){
 2         boolean update = false;
 3         
 4         //title
 5         if(!StringUtils.isEmpty(srcInfo.getTitle()) 
 6                 && !srcInfo.getTitle().equalsIgnoreCase(dstInfo.getTitle())){
 7             dstInfo.setTitle(srcInfo.getTitle());
 8             update = true;
 9         }
10         
11         //subtitle
12         if(!StringUtils.isEmpty(srcInfo.getSubtitle())
13             && !srcInfo.getSubtitle().equalsIgnoreCase(dstInfo.getSubtitle())){
14             dstInfo.setSubtitle(srcInfo.getSubtitle());
15             update = true;
16         }
17         
18         //image
19         if(!StringUtils.isEmpty(srcInfo.getImage())
20             && !srcInfo.getImage().equalsIgnoreCase(dstInfo.getImage())
21             && ( StringUtils.isEmpty(dstInfo.getImage()) ||  dstInfo.getImage().contains("book-default"))
22             ){
23             dstInfo.setImage(srcInfo.getImage());
24             update = true;
25         }
26         
27         //author
28         if(!StringUtils.isEmpty(srcInfo.getAuthor())
29                 && !srcInfo.getAuthor().equalsIgnoreCase(dstInfo.getAuthor())){
30             dstInfo.setAuthor(srcInfo.getAuthor());
31             update = true;
32         }
33         
34         //author_info
35         if(!StringUtils.isEmpty(srcInfo.getAuthor_intro())
36                 && !srcInfo.getAuthor_intro().equalsIgnoreCase(dstInfo.getAuthor_intro())){
37             dstInfo.setAuthor_intro(srcInfo.getAuthor_intro());
38             update = true;
39         }
40 
41         //rating
42         if(!StringUtils.isEmpty(srcInfo.getRating())
43                 && !srcInfo.getRating().equalsIgnoreCase(dstInfo.getRating())){
44             dstInfo.setRating(srcInfo.getRating());
45             update = true;
46         }
47         
48         //price
49         if(!StringUtils.isEmpty(srcInfo.getPrice())
50                 && StringUtils.isEmpty(dstInfo.getPrice())){
51             dstInfo.setPrice(srcInfo.getPrice());
52             update = true;
53         }
54         
55         //tags
56         if(!StringUtils.isEmpty(srcInfo.getTags())
57                 && !srcInfo.getTags().equalsIgnoreCase(dstInfo.getTags())){
58             dstInfo.setTags(srcInfo.getTags());
59             update = true;
60         }
61         
62         //summary
63         if(!StringUtils.isEmpty(srcInfo.getSummary())
64                 && !srcInfo.getSummary().equalsIgnoreCase(dstInfo.getSummary())){
65             dstInfo.setSummary(srcInfo.getSummary());
66             update = true;
67         }
68         
69         //catalog
70         if(!StringUtils.isEmpty(srcInfo.getCatalog())
71                 && !srcInfo.getCatalog().equalsIgnoreCase(dstInfo.getCatalog())){
72             dstInfo.setCatalog(srcInfo.getCatalog());
73             update = true;
74         }
75         
76         return update;
77     }
复制代码

可以在这个基础上继续完善对豆瓣和当当的数据合并处理。

posted on   麦克煎蛋  阅读(1465)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示