• 实验三 利用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,打开网址即可显示出你的高档可视化成果啦!

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

  • 相关阅读:
    opencv c++图像轮廓计算
    前端做自动化测试 —— 用TDD的思想做组件测试
    苍穹外卖(三) 员工分页及技术实现细节
    数据结构系列学习(五) - 双向链表(Double_Linked_List)
    springboot:xml配置信息
    ChatGLM 项目集合
    C# OpenCvSharp Yolov8 Pose 姿态识别
    【SSL 1535】小罐跳舞(构造)
    万向区块链王允臻:区块链如何助力文旅产业元宇宙?
    编程内功心法「公钥密码学系列」基础介绍公钥证书与私钥标准(1)
  • 原文地址:https://blog.csdn.net/long_songs/article/details/124883048