整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

基于微信小程序的书橱

基于微信小程序的书橱

、技术路线:

开发语言:Java

前端技术:JavaScript、VUE.js(2.X)、css3

数据库:MySQL 5.7

数据库管理工具:Navicat或sqlyog

开发工具:IDEA或Ecplise

二、项目介绍:

<script src="https://lf3-cdn-tos.bytescm.com/obj/cdn-static-resource/tt_player/tt.player.js?v=20160723"></script>

三、运行截图:

3.1用户功能模块的实现

3.1.1用户注册登录界面

没有账号的用户可进行注册操作,注册后可进行登录系统,用户注册登录界面展示如图3-1所示。

图3-1 用户注册登录界面图

3.1.2首页界面

用户登录后进入系统首页界面,首页界面展示如图3-2所示。

图3-2 首页界面图

3.1.3图书信息界面

用户在图书信息界面可查看所有图书信息,并可选择进行查看图书详情,进行阅读,图书信息界面展示如图3-3所示。

图3-3 图书信息界面图

3.1.4我的发帖界面

用户可管理个人已发帖信息,我的发帖界面如图3-4所示。

图3-4 我的发帖界面图

3.1.5电子书论坛界面

用户可查看电子书论坛信息,并可进行查看详情,电子书论坛界面如图3-5所示。

图3-5 电子书论坛界面图

3.1.6我要发帖界面

用户可进行发帖操作,我要发帖界面如图3-6所示。

图3-6 我要发帖界面图

3.2管理员功能模块的实现

3.2.1管理员登录界面

管理员可以通过正确的登录账号和密码进行登录系统后台,管理员登录界面展示如图3-7所示。

图3-7 管理员登录界面图

3.2.2图书类型管理界面

管理员登录后可增删改查图书类型信息,图书类型管理界面展示如图3-8所示。

图3-8 图书类型管理界面图

3.2.3图书信息管理界面

管理员可增删改查图书信息,图书信息管理界面展示如图3-9所示,添加图书信息界面展示如图3-10所示。

图3-9 图书信息管理界面图

图3-10 添加图书信息界面图

3.2.4电子书论坛管理界面

管理员可管理电子书论坛信息,电子书论坛管理界面展示如图3-11所示。

图3-11 电子书论坛管理界面图

在前面的话小书架买回家,摆放也有大学问。如何摆放节省空间?书籍如何搭配更合理?让书香来告诉你布置书架的好办法吧!“书香盒子”儿童书架使用秘籍给孩子的专属书架买回来家,怎么使用呢?让书香来教你几招吧!第一招拉着孩子一起做

很多妈妈把书架买回家,都会自顾自的忙活起来,书架放在哪,书架上放什么书,什么书放在什么位置,全都是妈妈说了算。这书架本就是孩子的专属书架,妈妈们千万别搞错定位,孩子的,当然是孩子说了算!

妈妈一定要与孩子一起来做这件事,书架放哪,放什么书,不放什么书,什么时候换什么书,都是孩子自己决定,年纪太小的孩子,妈妈可以给予更多的帮助和建议,但书架的摆放,妈妈们一定要让孩子参与进来,给孩子选择的空间。

第二招通盘考虑覆盖多

一套书架(两个)大致能放一、二百本书。妈妈要总体规划,通盘考虑。要覆盖孩子喜欢的书目、孩子近期关注的主题、妈妈希望让孩子接触的新书等等。可以由妈妈规划出几类图书,然后妈妈和孩子一起在挑选类别中的图书。

第三招套装摆放好方法

很多孩子的书架上都有套装书,一是因为绘本的篇幅所限,在表达内容方面局限性较大,一个主题要想从内容上表达清楚,单册绘本是很难做到的;二来孩子喜欢上一本书,接受了里面的绘本风格、人物形象,如果后面还有一系列跟这些因素有高度关联的其他内容,孩子是非常容易接受而连续阅读的,一个套装书看下来,孩子对角色的认知、解读,对画风的体会、对内容的思考,都比单册丰富的多。

套装书最好放在一起展示,其中的一本书展示出来,其他的书藏在身后,孩子看完一本第二本就露出脸来,如此接二连三的看下去。妈妈还可以经常换一下套装书的第一本展示书,尤其是大套装,给孩子多一些的选择。

第四招定期更换保新鲜

很多家庭空间有限,不可能为孩子所有的图书都陪伴小书架,对于只能放一、两个书架的家庭,妈妈可以将孩子暂时不读的图书收纳在成人的书柜或整理箱中,根据孩子阅读的频率,定期更换儿童书架上的图书。一些孩子一定阶段不感兴趣的书籍,就可以及时替换。

第五招摆放位置有学问

一个小书架,孩子最关注的是上面能直观看到封面的书籍展示层,放在这个区域的书往往是最容易引起孩子阅读兴趣的。一些希望孩子看到的图书就可以选择这个黄金位置摆放。而下面的囤书层,可以挑选一些孩子平时不常看的,或者是妈妈提前囤的还不适合孩子年龄阶段的书籍摆放。囤书层也是玩具收纳的好帮手。

第六招合理搭配省空间

“书香盒子”儿童书架标准版的尺寸是宽41.5*厚25*高65CM,包含三层展示层和一层囤书层。如果将家中的书籍合理搭配摆放,既节省空间,又能最大量的囤书。

发表文章为“书香儿童阅读”原创作品,转载请标明出处,谢谢合作!

关于“书香儿童阅读”书香儿童阅读(北京书香)专注于亲子阅读推广及儿童阅读产品研发,产品覆盖阅读环境及阅读内容,其中儿童书架产品已获得国家专利,主题阅读产品也深受家长和孩子的欢迎。书香儿童阅读产品代理火热招募中“书香盒子”书架及主题阅读产品,以渠道销售为主,欢迎各位爱孩子、爱阅读的妈妈做为产品代理,与书香一起推广儿童阅读!让每个孩子都爱上阅读!让每个家庭都拥有孩子专属的阅读空间!


本文由书香盒子发布,原文来自:http://www.shuxianghezi.com/news/101.html

关注了解更多亲子阅读贴心服务

2015年,美国官方解密了一系列有关本·拉登的文件,其中最引人瞩目的,是美国国家情报总监办公室在其官网上列出的“本·拉登的书架”。曝光的这份阅读清单涉及书籍和其他材料400余种。

其中包含了已解密的书信等文档103份、公开发表的美国政府文件75份等。本文关注的重点,是如何分析已经解密的103份书信等文档。

——EarlGrey@编程派

在本文中,我们将学习如何分析PDF文档,并且利用AlchemyAPI来进行实体抽取分析,看看本·拉登在这些信件中最常提到的10个实体是什么。

01

什么是AlchemyAPI?

AlchemyAPI是IBM旗下的一家公司,具有深度学习的自然语言处理和图片识别技术,可利用人工智能分析理解网页、文档、电子邮件、微博等形式的内容。它还将同Google 一样的神经网络分析技术应用其中。

AlchemyAPI目前共提供了12个文本分析功能:实体抽取(entitiy extraction),情感分析,关键字抓取,概念标识,关系提取,分类识别,作者提取,语言识别,文本提取,微格式分析,订阅内容识别,数据连接等。

接下来,我们开始进行准备工作。

本文中的代码大部分来自automatingosint,我对源代码进行更新。目前的脚本支持Python 3。

2

安装依赖包

由于美国ODNI公开的本·拉登信件都是PDF格式的,因此我们首先必须要安装能够处理PDF文档的Python包。这里,我使用的是PyPDF2。我们通过pip包管理器进行安装:

pip install pypdf2

另外,你肯定不想一封一封地手动103封书信吧?!省时省力的办法就是写个脚本把这些文档都爬取下来。由于要访问网页和解析网页,我们选择使用两个常用的第三方库:requests和BeautifulSoup 4:

pip install requests beautifulsoup4

3

获取免费AlchemyAPI Key

AlchemyAPI有一个免费的基础服务包,每天的事务处理上限为1000次。在本文中,我们将使用他们的实体抽取服务来执行文本分析。

获取免费AlchemyAPI Key非常简单,只需要填写一个表单即可,输入自己的邮箱地址。

申请处理完成之后,你就可以在邮箱中看到发送给你的API Key了。

4

安装AlchemyAPI Python SDK

获得API Key之后,我们可以通过AlchemyAPI提供的Python SDK和HTTP REST接口调用其提供的文本分析服务。在本文中,我们选择安装SDK的方式。

PyPI上之前有AlchemyAPI包,但是后来移除了下载包,因此我们不能使用pip来安装,只能通过Git克隆Python SDK的代码库或是直接下载代码库:

git clone https://github.com/AlchemyAPI/alchemyapi_python.git

接下来,我们要把申请到的API Key与SDK关联起来。打开终端,进入SDK文件夹,然后按下面的示例执行alchemyapi.py文件:

cd alchemyapi_python python alchemyapi.py YOUR_API_KEY 
# 将YOUR_API_KEY替换成你收到的Key

为确保SDK正常安装,可以按照提示运行example.py查看演示程序:

python example.py

如果最后出现了下图的文字,就证明SDK安装正确,API Key也可以使用。

5

下载文档

然后就到了怎么自动将103份PDF文档下载到本地了。

我们可以写一个简单的Python脚本来完成这项工作,但是我选择把它封装在download_bld_documents这个函数里,因为我想把所有的代码都放在一个脚本里,这样大家就可以直接运行这个脚本,等待一段时间,就可以看到最后的结果了。

这个函数写的比较简单,但是已经能够满足我们的需求了。

def download_bld_documents: """Download Bin Laden's Declassified documents from ODNI.""" import os

import time

import requests

from bs4 import BeautifulSoup

# 创建一个名为“pdfs”的文件夹,用于保存所有下载的PDF文档。 try: os.mkdir("pdfs") except: pass

# 获取ODNI网站上有关本·拉登书架的网页,

# 将其交给Beautiful Soup,以进行HTML解析。 response=requests.get( "http://www.dni.gov/index.php/resources/bin-laden-bookshelf?start=1") if response.status_code==200: html=BeautifulSoup(response.content) link_list=

# 从网页中第54个超链接开始,我们遍历所有的文档链接,

# 仅保留那些我们所需要的链接:即含有“pdf”但不包含“Arabic”

# 字样的链接。我们将满足要求的链接保存到列表`link_list`中。 for i in html.findAll("a")[54:]: if "pdf" in i['href'] and "Arabic" not in i.text: link_list.append("http://www.odni.gov%s" % i['href'])

# 接下来,我们遍历列表中所有的元素,

# 从原链接中获取PDF的文件名,

#然后从ODNI网站下载相应的文档。 for i in link_list: response=requests.get(i) file_name=i.split("/")[::-1][0] fd=open("pdfs/%s" % file_name, "wb") fd.write(response.content) fd.close time.sleep(1)

由于文件数量比较多,因此在最终执行脚本时,耗费在文件下载的时间可能会比较长。如果你从ODNI网站下载的速度非常慢,那么可以前往我的百度网盘下载,但是在最终执行时要对脚本做修改。只需要执行下文中的函数即可。

在微信号中,回复“laden”即可获得分享链接及提取码。

6

处理文档

下面,我们就可以正式对下载的PDF文档进行分析了。我们将要利用Alchemy API提供的强大工具,对这些PDF文档进行实体抽取(entitiy extraction)分析。通过实体分析,我们可以了解本·拉登在这些信件和文件中,谈到最多的人、地方或东西是什么。

所以,我们要一一打开这些PDF文件,从文档中提取所有的文本,然后将其提交至Alchemy进行分析处理。在处理每一个文档时,我们可以得到其中的实体数据,最后将所有文档的分析数据结合在一起,就可以得到出现频率最高的实体了。

我们将这部分代码封装在process_documents函数中:

def process_documents: """Process downloaded documents using AlchemyAPI.""" # 导入所需要的模块,包括我们安装的PyPDF2和AlchemyAPI。 import PyPDF2

import glob

import time

from collections import Counter

from alchemyapi import AlchemyAPI alchemyapi=AlchemyAPI # 初始化AlchemyAPI。 file_list=glob.glob("pdfs/*.pdf")

# 通过`glob`模块获取我们下载的所有PDF文件的文件名。 entities={}

# 我们要使用`entities`字典来保存每个PDF文档的分析结果。 # 下面的for循环将遍历所有的PDF文件 for pdf_file in file_list: # read in the PDF print("[*] Parsing %s" % pdf_file) # 初始化一个PyPDF2对象,用于保存从PDF文档中提取的文本数据 pdf_obj=PyPDF2.PdfFileReader(open(pdf_file, "rb")) # 创建一个空字符串,用于后续构建这个PDF的全部文本数据 full_text="" # 从每页中提取文本数据 for page in pdf_obj.pages: full_text +=page.extractText # 接下来我们使用Alchemy API进行实体抽取 print("[*] Sending %d bytes to the Alchemy API" % len(full_text)) # 调用AlchemyAPI,并明确我们提交的是文本数据(第一个参数)

# 然后传入需要分析的文本,第三个参数代表禁用情感分析功能,

# 因为本文中我们只关注频率最??的实体。 response=alchemyapi.entities('text', full_text, {'sentiment': 0}) if response['status']=='OK': # 遍历返回的全部实体数据。

# Alchemy返回的每个实体中,都包含有`count`数据,

# 我们要确保在`entities`字典中,将所有相同实体的count相加 for entity in response['entities']: # add each entity to our master list if entity['text'] in entities: entities[entity['text']] +=int(entity['count']) else: entities[entity['text']]=int(entity['count']) print("[*] Retrieved %d entities from %s" % (len(entities), pdf_file)) else: print("[!] Error receiving Alchemy response: %s" % response['statusInfo']) time.sleep(1) # 上面的循环执行结束,我们可以统计最常见的实体,

# 并把相关的结果打印出来了! entity_counter=Counter(entities) top_entities=entity_counter.most_common # 接下来就开始打印本·拉登提到次数最多的实体吧! for top_entity in top_entities[0:10]: # most_common returns a tuple (entity,count) print("%s=> %d" % (top_entity[0], top_entity[1]))

微信阅读代码不方便的话,请点击阅读原文。

上面函数的最后,我们使用了Counter类来加载entities字典,并且很容易地就得出了最常见的实体。

7

快速执行数据分析

最后执行脚本时,一定要注意:要把脚本放在alchemyapi_python这个文件夹里。这是因为AlchemyAPI SDK并没有在Python的PATH上。

为了让大家少复制粘贴,我已经把相关的操作写在一个bash脚本里。大家下载脚本后修改API KEY即可。

curl https://raw.githubusercontent.com/bingjin/funscripts/master/laden/bld.sh --output bld.sh sh bld.sh

上图就是正在执行的脚本。想不想看看最终的分析结果?

我直接告诉你们就太没趣了,大家可以运行脚本自己看,等待的同时可以品尝一杯咖啡。当然,剧透也是有的:伊斯兰教先知穆罕默德居然才排第七!

你分析的结果是怎样的,留言告诉大家本·拉登提到次数最多的三个实体吧!

9

结语

本文中仅使用了AlchemyAPI的实体提取功能,其他诸如关键词分析、情感分析、图像分析等功能都没有涉及。大家可以在本文的基础上,进一步发挥自己的想象力,看看还能从本·拉登的书架中得到什么信息。

...

Python核心开发者:print为什么从语句变成了函数?