• 实验三 利用flask框架和Echarts实现电影榜单可视化


     先看成品图

     

    代码有点多放在我的github上

    https://github.com/longsongline/douban-bigdata-showicon-default.png?t=M4ADhttps://github.com/longsongline/douban-bigdata-show

    使用具体流程

    1.先运行dashuju3.py

    这个是用于爬取的豆瓣top250的代码,会生成一个csv文件

    1. 1.import requests
    2. 2.import bs4
    3. 3.import csv
    4. 4.
    5. 5.from lxml import etree
    6. 6.import requests
    7. 7.import  time
    8. 8.import os
    9. 9.
    10. 10.import datetime
    11. 11.import time
    12. 12.#创建或者写入csv
    13. 13.csv_file=open('dashuju250.csv''w', newline='',encoding='utf-8')
    14. 14.writer = csv.writer(csv_file)
    15. 15.#列名添加
    16. 16.writer.writerow(['No''name''score''recommendation''yanyuan','daoyan','year','country','classes'])
    17. 17.#请求头越猛越好,反正这个豆瓣就是让你爬的,不用那么多也行
    18. 18.headers = {
    19. 19.        'User-Agent''Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36',
    20. 20.        'Cookie''lang=zh-cn; theme=default; ajax_lastNext=on; selfClose=1; bugModule=0; bugBranch=0; treeBranch=0; moduleBrowseParam=0; openApp=qa; windowWidth=659; windowHeight=706',
    21. 21.    }
    22. 22.#因为有十个页面,所以目前采用分别爬取
    23. 23.for x in range(10):
    24. 24.    #每一个的连接
    25. 25.    url = 'https://movie.douban.com/top250?start=' + str(x*25) + '&filter='
    26. 26.    res = requests.get(url, headers=headers)
    27. 27.    #靓汤出马
    28. 28.    bs = bs4.BeautifulSoup(res.text, 'html.parser')
    29. 29.    bs = bs.find('ol', class_="grid_view")
    30. 30.    #就打开f12找需要的东西的<li>在哪
    31. 31.    for titles in bs.find_all('li'):
    32. 32.        print(titles)
    33. 33.        num = titles.find('em',class_="").text
    34. 34.        title = titles.find('span', class_="title").text
    35. 35.        comment = titles.find('span',class_="rating_num").text
    36. 36.        others=titles.find('div',class_='bd').find('p').text.strip('').split('\n')
    37. 37.
    38. 38.        if '\xa0\xa0\xa0' in others[1]:
    39. 39.            actors_director=others[1].strip('').split('\xa0\xa0\xa0')
    40. 40.            director=actors_director[0].strip(' ')
    41. 41.            actors=actors_director[1]
    42. 42.        else:
    43. 43.            actors_director=others[1].strip('').split('\xa0\xa0\xa0')
    44. 44.            director=actors_director[0].strip(' ')
    45. 45.            actors=''
    46. 46.
    47. 47.        year_country_type=others[2].strip('').split('\xa0/\xa0')
    48. 48.        year=year_country_type[0].strip(' ')
    49. 49.        country=year_country_type[1]
    50. 50.        movie_type=year_country_type[2]
    51. 51.        #对于可能存在的空数据,可以用if/else语句分情况讨论,这样就不会无法运行或者碰到数据不完整的情况了
    52. 52.        if titles.find('span',class_="inq") != None:
    53. 53.            tes = titles.find('span',class_="inq").text
    54. 54.            writer.writerow([num , title , comment , tes , actors,director, year, country, movie_type])
    55. 55.        else:
    56. 56.            writer.writerow([num , title , comment , '', actors,director, year, country, movie_type])   
    57. 57.#关上罪恶的文件
    58. 58.csv_file.close()

     

     这个文件想直接获取的话就下载就行了

    这样就可以省去这一步

    https://download.csdn.net/download/long_songs/85406980https://download.csdn.net/download/long_songs/85406980

    2.运行ciyun.py

    制作词云

    这一步,如果也不想做,直接把图片偷走就好了

     然后再换底运行

    3.huandi.py

    换成蓝色的底部,因为我的可视化的色调是蓝色的

     4.布置准备好,替换好路径后,运行app.py 的flask,打开网址即可显示出你的高档可视化成果啦!

    有什么问题可以留言或者私信我

  • 相关阅读:
    【Java基础面试十四】、 封装的目的是什么,为什么要有封装?
    python企业编码管理的程序(附源码)
    Flask 与 Django 框架对比
    机器学习--决策树(sklearn)
    【C语言进阶】动态内存管理
    Java项目(三)-- SSM开发社交网站(8)--实现会员交互功能
    3年外包裸辞,面试阿里、字节全都一面挂,哭死.....
    springboot+vue.js+Elementui在线课程管理系统
    window开机自动运行python脚本
    [附源码]Python计算机毕业设计Django的低碳生活记录网站
  • 原文地址:https://blog.csdn.net/long_songs/article/details/124883048