python django框架-maoyan项目添加tangshi应用

一.实现功能

1. 诗人作品数排名列表

根据爬虫数据抓取的总作品数排序生成排名,前端以表格显示

排名
2. 词云.

将每个诗人的所有作品进行文本处理,使用jieba和wordcloud模块生成词云

李白词云
3. 实现词云搜索

前端页面在展示排行榜时候,加入了搜索文本框和搜索按钮,通过点击搜索按钮查询出该诗人的总作品数和词云,如果没有搜索结果,后期会考虑加入调动爬虫抓取,目前检索数据库没有数据的话返回无数据的提示.

搜索词云

二.处理逻辑

1. 诗人列表的实现没有用到django的orm模型,生成models.py文件,因为表在爬虫时候已经建好,python manage.py inspectdb虽然可以执行已存在表创建对应的model,考虑到sql用的多,处理数据相对更容易.最终采用\Python链接上mysql执行的sql语句,将数据渲染到前端html页面
2. 词云

django中在项目根目录下创建了static文件夹,用于存放图片 js 字体等静态文件,并且在settings中也设置了static的路径,

#静态文件设置的路径
STATIC_URL = '/static/'
STATICFILES_DIRS=[os.path.join(BASE_DIR,  'static')]

如果想在页面里嵌入图片的话,前端html 中img src属性需要指定图片路径,这里我存到到了static/wordImages路径,根据诗人的姓名命名图片.

考虑到查询返回效率问题:

2.1 首先生成全部词云图片
爬虫抓取下来2391位诗人后,首先用jieba和wordcloud模块实现了全部词云图片的生成,保存到static/wordImages路径.

全部词云图片生成

2.2 搜索查询场景
查询的时候会调用检查词云是否存在的check_word_cloud函数,如果存在直接调取该图片,不存在图片会将参数传递给制作词云的函数去生成并保存到static/wordImages路径.

3.词云代码
from maoyan.settings import BASE_DIR
    #制作 词云图片 存放到    static/wordImages目录 根据前端搜索传递的诗人姓名 生成
    def make_poemer_word_clound(self,poemer):
        wordcloud_png_path = path.join(BASE_DIR, 'static/wordImages/{}'.format(poemer))
        par_path = path.dirname(__file__)
        datas = [x[1] for x in self.fetch_data(self.tangshi_word_clound_sql.format(poemer))]
        word_list = [" ".join(jieba.cut(sentence)) for sentence in datas]
        new_text = ' '.join(word_list)
        imagename = path.join(par_path, "bg.png")  # 背景图片路径
        coloring = imread(imagename)  # 读取背景图片
        fontname = path.join(par_path, "msyh.ttf")  # 使用的是微软雅黑字体
        wordcloud = WordCloud(mask=coloring, font_path=fontname,max_font_size=40).generate(new_text)
        plt.imshow(wordcloud)
        plt.axis("off")
        wordcloud.to_file('{}.png'.format(wordcloud_png_path))

    #生成所有诗人的图片 先检查是否存在词云 不存在调取
    def make_all_word_cloud(self):
        #fetch_data函数为查询数据库诗人表 select id,poemer from poemers返回的元组
        all_poemers = [{'id':int(x[0]),'poemer':x[2]} for x in self.fetch_data(self.all_poemers_sql)]
        for item in all_poemers:
            if self.check_word_cloud(item['poemer']):
                continue
            else:
                #不存在调用生成词云
                self.make_poemer_word_clound(item['poemer'])
        return all_poemers

    #检查前端传递的诗人 词云图片是否存在 返回True或者False
    def check_word_cloud(self,poemer):
        par_path = path.join(BASE_DIR, 'static/wordImages')
        os.chdir(par_path)
        for root, dirs, files in os.walk(".", topdown=True):
            if poemer in [file.replace('.png', '') for file in files]:
                return True
            else:
                return False
4.django app tangshi下views.py view视图函数
def all_word_cloud(request):
    tangshi = TangShi()
    all_poemers = tangshi.make_all_word_cloud()
    return render(request,'tangshi/all_poemers_words_cloud.html',{'all_poemers':all_poemers})
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,772评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,458评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,610评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,640评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,657评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,590评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,962评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,631评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,870评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,611评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,704评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,386评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,969评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,944评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,179评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,742评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,440评论 2 342

推荐阅读更多精彩内容