精华内容
下载资源
问答
  • python爬虫加数据可视化
    万次阅读 多人点赞
    2019-07-05 15:18:31

    取目标:中国天气网(起始url:http://www.weather.com.cn/textFC/hb.shtml#)

    爬取内容:全国实时温度最低的十个城市气温排行榜

    使用工具:requests库实现发送请求、获取响应。

    beautifulsoup实现数据解析、提取和清洗

    pyechart模块实现数据可视化

    爬取结果:柱状图可视化展示:在这里插入图片描述

    直接放代码

    from bs4 import BeautifulSoup
    from pyecharts import Bar
     
    '''
    遇到python不懂的问题,可以加Python学习交流qun  688244617一起学习交流,还有零基础入门的学习资料和大量干货哦
    '''
    ALL_DATA = []
    def send_parse_urls(start_urls):
        headers = {
        "User-Agent": "Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)"
        }
        for start_url in start_urls:
            response = requests.get(start_url,headers=headers)
            # 编码问题的解决
            response = response.text.encode("raw_unicode_escape").decode("utf-8")
            soup = BeautifulSoup(response,"html5lib") #lxml解析器:性能比较好,html5lib:适合页面结构比较混乱的
            div_tatall = soup.find("div",class_="conMidtab") #find() 找符合要求的第一个元素
            tables = div_tatall.find_all("table") #find_all() 找到符合要求的所有元素的列表
            for table in tables:
                trs = table.find_all("tr")
                info_trs = trs[2:]
                for index,info_tr in enumerate(info_trs): # 枚举函数,可以获得索引
                    # print(index,info_tr)
                    # print("="*30)
                    city_td = info_tr.find_all("td")[0]
                    temp_td = info_tr.find_all("td")[6]
                    # if的判断的index的特殊情况应该在一般情况的后面,把之前的数据覆盖
                    if index==0:
                        city_td = info_tr.find_all("td")[1]
                        temp_td = info_tr.find_all("td")[7]
                    city=list(city_td.stripped_strings)[0]
                    temp=list(temp_td.stripped_strings)[0]
                    ALL_DATA.append({"city":city,"temp":temp})
        return ALL_DATA
     
    def get_start_urls():
        start_urls = [
           "http://www.weather.com.cn/textFC/hb.shtml",
            "http://www.weather.com.cn/textFC/db.shtml",
            "http://www.weather.com.cn/textFC/hd.shtml",
            "http://www.weather.com.cn/textFC/hz.shtml",
            "http://www.weather.com.cn/textFC/hn.shtml",
            "http://www.weather.com.cn/textFC/xb.shtml",
            "http://www.weather.com.cn/textFC/xn.shtml",
            "http://www.weather.com.cn/textFC/gat.shtml",
        ]
        return start_urls
     
    def main():
        """
        主程序逻辑
        展示全国实时温度最低的十个城市气温排行榜的柱状图
        """
        # 1 获取所有起始url
        start_urls = get_start_urls()
        # 2 发送请求获取响应、解析页面
        data = send_parse_urls(start_urls)
        # print(data)
        # 4 数据可视化
            #1排序
        data.sort(key=lambda data:int(data["temp"]))
            #2切片,选择出温度最低的十个城市和温度值
        show_data = data[:10]
            #3分出城市和温度
        city = list(map(lambda data:data["city"],show_data))
        temp = list(map(lambda data:int(data["temp"]),show_data))
            #4创建柱状图、生成目标图
        chart = Bar("中国最低气温排行榜") #需要安装pyechart模块
        chart.add("",city,temp)
        chart.render("tempture.html")
     
    if __name__ == '__main__':
        main()
     
    
    
    --------------------- 不要错过哦   688244617 快来一起学习吧!
    
    更多相关内容
  • 模拟浏览器这些基本数据都可以爬取:为了实现交互型爬取,我写了一个能够实现输入想了解的职位就能爬取相关内容的函数这里我除了爬取图上信息外,还把职位超链接后的网址,以及公司超链接的网址爬取下来了。...
  • python爬虫,并将数据进行可视化分析,数据可视化包含饼图、柱状图、漏斗图、词云、另附源代码和报告书。
  • Python爬虫数据可视化分析大作业,python爬取猫眼评论数据,并做可视化分析。
  • 数据处理与可视化之Altair 后言-python爬虫相关库 网络爬虫简介 网络爬虫(webcrawler,又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种用来自动浏览万维网的程序或者脚本。爬虫...
  • Python爬虫数据分析可视化.rar
  • Python爬虫以及数据可视化分析

    万次阅读 多人点赞 2020-12-25 17:43:30
    Python爬虫以及数据可视化分析之B站动漫排行榜信息爬取分析 简书地址:https://www.jianshu.com/u/40ac87350697 简单几步,通过Python对B站番剧排行数据进行爬取,并进行可视化分析 源码文件可以参考Github上传的...

    Python爬虫以及数据可视化分析之Bilibili动漫排行榜信息爬取分析

    简书地址:https://www.jianshu.com/u/40ac87350697

    简单几步,通过Python对B站番剧排行数据进行爬取,并进行可视化分析

    源码文件可以参考Github上传的项目:https://github.com/Lemon-Sheep/Py/tree/master

    下面,我们开始吧!

    PS: 作为Python爬虫初学者,如有不正确的地方,望各路大神不吝赐教[抱拳]

    本项目将会对B站番剧排行的数据进行网页信息爬取以及数据可视化分析
    image.png

    首先,准备好相关库

    requests、pandas、BeautifulSoup、matplotlib等

    因为这是第三方库,所以我们需要额外下载
    下载有两种方法(以requests为例,其余库的安装方法类似):

    (一)在命令行输入

    前提:装了pip( Python 包管理工具,提供了对Python 包的查找、下载、安装、卸载的功能。 )

    pip install requests

    (二)通过PyCharm下载

    第一步:编译器左上角File–>Settings…
    image.png
    第二步:找到Project Interpreter 点击右上角加号按钮,弹出界面上方搜索库名:requests,点击左下角Install ,当提示successfully时,即安装完成。
    2.png

    image.png

    准备工作做好后,开始项目的实行

    一、获取网页内容

    def get_html(url):
        try:
            r = requests.get(url)             # 使用get来获取网页数据
            r.raise_for_status()              # 如果返回参数不为200,抛出异常
            r.encoding = r.apparent_encoding  # 获取网页编码方式
            return r.text                     # 返回获取的内容
        except:
            return '错误'
    

    我们来看爬取情况,是否有我们想要的内容:

    def main():
        url = 'https://www.bilibili.com/v/popular/rank/bangumi'    # 网址
        html = get_html(url)                                       # 获取返回值
        print(html)                                              # 打印
    
    if __name__ == '__main__':                        #入口
        main()
    

    爬取结果如下图所示:
    image.png
    成功!

    二、信息解析阶段:

    第一步,先构建BeautifulSoup实例

    soup = BeautifulSoup(html, 'html.parser') # 指定BeautifulSoup的解析器
    

    第二步,初始化要存入信息的容器

    # 定义好相关列表准备存储相关信息
        TScore = []  # 综合评分
        name = []  # 动漫名字
        play= []  # 播放量
        review = []  # 评论数
        favorite= []  # 收藏数
    

    第三步,开始信息整理
    我们先获取番剧的名字,并将它们先存进列表中

    # ********************************************  动漫名字存储
        for tag in soup.find_all('div', class_='info'):
            # print(tag)
            bf = tag.a.string
            name.append(str(bf))
        print(name)
    

    此处我们用到了beautifulsoup的find_all()来进行解析。在这里,find_all()的第一个参数是标签名,第二个是标签中的class值(注意下划线哦(class_=‘info’))。

    我们在网页界面按下F12,就能看到网页代码,找到相应位置,就能清晰地看见相关信息:
    image.png

    接着,我们用几乎相同的方法来对综合评分、播放量,评论数和收藏数来进行提取

    # ********************************************  播放量存储
        for tag in soup.find_all('div', class_='detail'):
            # print(tag)
            bf = tag.find('span', class_='data-box').get_text()
            # 统一单位为‘万’
            if '亿' in bf:
                num = float(re.search(r'\d(.\d)?', bf).group()) * 10000
                # print(num)
                bf = num
            else:
                bf = re.search(r'\d*(\.)?\d', bf).group()
            play.append(float(bf))
        print(play)
        # ********************************************  评论数存储
        for tag in soup.find_all('div', class_='detail'):
            # pl = tag.span.next_sibling.next_sibling
            pl = tag.find('span', class_='data-box').next_sibling.next_sibling.get_text()
            # *********统一单位
            if '万' not in pl:
                pl = '%.1f' % (float(pl) / 10000)
                # print(123, pl)
            else:
                pl = re.search(r'\d*(\.)?\d', pl).group()
            review.append(float(pl))
        print(review)
        # ********************************************  收藏数
        for tag in soup.find_all('div', class_='detail'):
            sc = tag.find('span', class_='data-box').next_sibling.next_sibling.next_sibling.next_sibling.get_text()
            sc = re.search(r'\d*(\.)?\d', sc).group()
            favorite.append(float(sc))
        print(favorite)
        # ********************************************  综合评分
        for tag in soup.find_all('div', class_='pts'):
            zh = tag.find('div').get_text()
            TScore.append(int(zh))
        print('综合评分', TScore)
    

    其中有个.next_sibling是用于提取同级别的相同标签信息,如若没有这个方法,当它找到第一个’span’标签之后,就不会继续找下去了(根据具体情况来叠加使用此方法);
    还用到了正则表达式来提取信息(需要导入库‘re’)

    最后我们将提取的信息,存进excel表格之中,并返回结果集

    # 存储至excel表格中
        info = {'动漫名': name, '播放量(万)': play, '评论数(万)': review,'收藏数(万)': favorite, '综合评分': TScore}
        dm_file = pandas.DataFrame(info)
        dm_file.to_excel('Dongman.xlsx', sheet_name="动漫数据分析")
        # 将所有列表返回
        return name, play, review, favorite, TScore
    

    我们可以打开文件看一看存储的信息格式(双击打开)
    image.png
    image.png
    成功!

    三、数据可视化分析

    我们先做一些基础设置
    要先准备一个文件: STHeiti Medium.ttc [注意存放在项目中的位置]
    image.png

    my_font = font_manager.FontProperties(fname='./data/STHeiti Medium.ttc')  # 设置中文字体(图表中能显示中文)
    
     # 为了坐标轴上能显示中文
        plt.rcParams['font.sans-serif'] = ['SimHei']
        plt.rcParams['axes.unicode_minus'] = False
    
        dm_name = info[0]  # 番剧名
        dm_play = info[1]  # 番剧播放量
        dm_review = info[2]  # 番剧评论数
        dm_favorite = info[3]  # 番剧收藏数
        dm_com_score = info[4]  # 番剧综合评分
        # print(dm_com_score)
    

    然后,开始使用matplot来绘制图形,实现数据可视化分析
    文中有详细注释,这里就不再赘述了,聪明的你一定一看就懂了~

    # **********************************************************************综合评分和播放量对比
        # *******综合评分条形图
        fig, ax1 = plt.subplots()
        plt.bar(dm_name, dm_com_score, color='red')  #设置柱状图
        plt.title('综合评分和播放量数据分析', fontproperties=my_font)  # 表标题
        ax1.tick_params(labelsize=6)  
        plt.xlabel('番剧名')  # 横轴名
        plt.ylabel('综合评分')  # 纵轴名
        plt.xticks(rotation=90, color='green')  # 设置横坐标变量名旋转度数和颜色
    
        # *******播放量折线图
        ax2 = ax1.twinx()  # 组合图必须加这个
        ax2.plot(dm_play, color='cyan')  # 设置线粗细,节点样式
        plt.ylabel('播放量')  # y轴
    
        plt.plot(1, label='综合评分', color="red", linewidth=5.0)  # 图例
        plt.plot(1, label='播放量', color="cyan", linewidth=1.0, linestyle="-")  # 图例
        plt.legend()
    
        plt.savefig(r'E:1.png', dpi=1000, bbox_inches='tight')  #保存至本地
    
        plt.show()
    

    来看看效果

    有没有瞬间就感觉高~大~上~~了(嘿嘿~)

    然后我们用相同的方法来多绘制几个对比图:

    # **********************************************************************评论数和收藏数对比
        # ********评论数条形图
        fig, ax3 = plt.subplots()
        plt.bar(dm_name, dm_review, color='green')
        plt.title('番剧评论数和收藏数分析')
        plt.ylabel('评论数(万)')
        ax3.tick_params(labelsize=6)
        plt.xticks(rotation=90, color='green')
    
        # *******收藏数折线图
        ax4 = ax3.twinx()  # 组合图必须加这个
        ax4.plot(dm_favorite, color='yellow')  # 设置线粗细,节点样式
        plt.ylabel('收藏数(万)')
    
        plt.plot(1, label='评论数', color="green", linewidth=5.0)
        plt.plot(1, label='收藏数', color="yellow", linewidth=1.0, linestyle="-")
        plt.legend()
        plt.savefig(r'E:2.png', dpi=1000, bbox_inches='tight')
    
        # **********************************************************************综合评分和收藏数对比
        # *******综合评分条形图
        fig, ax5 = plt.subplots()
        plt.bar(dm_name, dm_com_score, color='red')
        plt.title('综合评分和收藏数量数据分析')
        plt.ylabel('综合评分')
        ax5.tick_params(labelsize=6)
        plt.xticks(rotation=90, color='green')
    
        # *******收藏折线图
        ax6 = ax5.twinx()  # 组合图必须加这个
        ax6.plot(dm_favorite, color='yellow')  # 设置线粗细,节点样式
        plt.ylabel('收藏数(万)')
        plt.plot(1, label='综合评分', color="red", linewidth=5.0)
        plt.plot(1, label='收藏数', color="yellow", linewidth=1.0, linestyle="-")
        plt.legend()
    
        plt.savefig(r'E:3.png', dpi=1000, bbox_inches='tight')
    
        # **********************************************************************播放量和评论数对比
        # *******播放量条形图
        fig, ax7 = plt.subplots()
        plt.bar(dm_name, dm_play, color='cyan')
        plt.title('播放量和评论数 数据分析')
        plt.ylabel('播放量(万)')
        ax7.tick_params(labelsize=6)
        plt.xticks(rotation=90, color='green')
    
        # *******评论数折线图
        ax8 = ax7.twinx()  # 组合图必须加这个
        ax8.plot(dm_review, color='green')  # 设置线粗细,节点样式
        plt.ylabel('评论数(万)')
        plt.plot(1, label='播放量', color="cyan", linewidth=5.0)
        plt.plot(1, label='评论数', color="green", linewidth=1.0, linestyle="-")
        plt.legend()
        plt.savefig(r'E:4.png', dpi=1000, bbox_inches='tight')
    
        plt.show()
    

    我们来看看最终效果
    image.png
    image.png

    Nice!很完美~ 大家可以根据自己的想法按照相同的方法进行数据组合分析。

    最后,附上全部代码

    import re
    import pandas
    import requests
    from bs4 import BeautifulSoup
    import matplotlib.pyplot as plt
    from matplotlib import font_manager
    
    
    def get_html(url):
        try:
            r = requests.get(url)  # 使用get来获取网页数据
            r.raise_for_status()  # 如果返回参数不为200,抛出异常
            r.encoding = r.apparent_encoding  # 获取网页编码方式
            return r.text  # 返回获取的内容
        except:
            return '错误'
    
    
    def save(html):
        # 解析网页
        soup = BeautifulSoup(html, 'html.parser')  # 指定Beautiful的解析器为“html.parser”
    
        with open('./data/B_data.txt', 'r+', encoding='UTF-8') as f:
            f.write(soup.text)
    
        # 定义好相关列表准备存储相关信息
        TScore = []  # 综合评分
        name = []  # 动漫名字
        bfl = []  # 播放量
        pls = []  # 评论数
        scs = []  # 收藏数
    
        # ********************************************  动漫名字存储
        for tag in soup.find_all('div', class_='info'):
            # print(tag)
            bf = tag.a.string
            name.append(str(bf))
        print(name)
    
        # ********************************************  播放量存储
        for tag in soup.find_all('div', class_='detail'):
            # print(tag)
            bf = tag.find('span', class_='data-box').get_text()
            # 统一单位为‘万’
            if '亿' in bf:
                num = float(re.search(r'\d(.\d)?', bf).group()) * 10000
                # print(num)
                bf = num
            else:
                bf = re.search(r'\d*(\.)?\d', bf).group()
            bfl.append(float(bf))
        print(bfl)
        # ********************************************  评论数存储
        for tag in soup.find_all('div', class_='detail'):
            # pl = tag.span.next_sibling.next_sibling
            pl = tag.find('span', class_='data-box').next_sibling.next_sibling.get_text()
            # *********统一单位
            if '万' not in pl:
                pl = '%.1f' % (float(pl) / 10000)
                # print(123, pl)
            else:
                pl = re.search(r'\d*(\.)?\d', pl).group()
            pls.append(float(pl))
        print(pls)
        # ********************************************  收藏数
        for tag in soup.find_all('div', class_='detail'):
            sc = tag.find('span', class_='data-box').next_sibling.next_sibling.next_sibling.next_sibling.get_text()
            sc = re.search(r'\d*(\.)?\d', sc).group()
            scs.append(float(sc))
        print(scs)
        # ********************************************  综合评分
        for tag in soup.find_all('div', class_='pts'):
            zh = tag.find('div').get_text()
            TScore.append(int(zh))
        print('综合评分', TScore)
    
        # 存储至excel表格中
        info = {'动漫名': name, '播放量(万)': bfl, '评论数(万)': pls, '收藏数(万)': scs, '综合评分': TScore}
        dm_file = pandas.DataFrame(info)
        dm_file.to_excel('Dongman.xlsx', sheet_name="动漫数据分析")
        # 将所有列表返回
        return name, bfl, pls, scs, TScore
    
    
    def view(info):
        my_font = font_manager.FontProperties(fname='./data/STHeiti Medium.ttc')  # 设置中文字体(图标中能显示中文)
        dm_name = info[0]  # 番剧名
        dm_play = info[1]  # 番剧播放量
        dm_review = info[2]  # 番剧评论数
        dm_favorite = info[3]  # 番剧收藏数
        dm_com_score = info[4]  # 番剧综合评分
        # print(dm_com_score)
    
        # 为了坐标轴上能显示中文
        plt.rcParams['font.sans-serif'] = ['SimHei']
        plt.rcParams['axes.unicode_minus'] = False
    
        # **********************************************************************综合评分和播放量对比
        # *******综合评分条形图
        fig, ax1 = plt.subplots()
        plt.bar(dm_name, dm_com_score, color='red')  #设置柱状图
        plt.title('综合评分和播放量数据分析', fontproperties=my_font)  # 表标题
        ax1.tick_params(labelsize=6)
        plt.xlabel('番剧名')  # 横轴名
        plt.ylabel('综合评分')  # 纵轴名
        plt.xticks(rotation=90, color='green')  # 设置横坐标变量名旋转度数和颜色
    
        # *******播放量折线图
        ax2 = ax1.twinx()  # 组合图必须加这个
        ax2.plot(dm_play, color='cyan')  # 设置线粗细,节点样式
        plt.ylabel('播放量')  # y轴
    
        plt.plot(1, label='综合评分', color="red", linewidth=5.0)  # 图例
        plt.plot(1, label='播放量', color="cyan", linewidth=1.0, linestyle="-")  # 图例
        plt.legend()
    
        plt.savefig(r'E:1.png', dpi=1000, bbox_inches='tight')  #保存至本地
    
        # plt.show()
    
        # **********************************************************************评论数和收藏数对比
        # ********评论数条形图
        fig, ax3 = plt.subplots()
        plt.bar(dm_name, dm_review, color='green')
        plt.title('番剧评论数和收藏数分析')
        plt.ylabel('评论数(万)')
        ax3.tick_params(labelsize=6)
        plt.xticks(rotation=90, color='green')
    
        # *******收藏数折线图
        ax4 = ax3.twinx()  # 组合图必须加这个
        ax4.plot(dm_favorite, color='yellow')  # 设置线粗细,节点样式
        plt.ylabel('收藏数(万)')
    
        plt.plot(1, label='评论数', color="green", linewidth=5.0)
        plt.plot(1, label='收藏数', color="yellow", linewidth=1.0, linestyle="-")
        plt.legend()
        plt.savefig(r'E:2.png', dpi=1000, bbox_inches='tight')
    
        # **********************************************************************综合评分和收藏数对比
        # *******综合评分条形图
        fig, ax5 = plt.subplots()
        plt.bar(dm_name, dm_com_score, color='red')
        plt.title('综合评分和收藏数量数据分析')
        plt.ylabel('综合评分')
        ax5.tick_params(labelsize=6)
        plt.xticks(rotation=90, color='green')
    
        # *******收藏折线图
        ax6 = ax5.twinx()  # 组合图必须加这个
        ax6.plot(dm_favorite, color='yellow')  # 设置线粗细,节点样式
        plt.ylabel('收藏数(万)')
        plt.plot(1, label='综合评分', color="red", linewidth=5.0)
        plt.plot(1, label='收藏数', color="yellow", linewidth=1.0, linestyle="-")
        plt.legend()
    
        plt.savefig(r'E:3.png', dpi=1000, bbox_inches='tight')
    
        # **********************************************************************播放量和评论数对比
        # *******播放量条形图
        fig, ax7 = plt.subplots()
        plt.bar(dm_name, dm_play, color='cyan')
        plt.title('播放量和评论数 数据分析')
        plt.ylabel('播放量(万)')
        ax7.tick_params(labelsize=6)
        plt.xticks(rotation=90, color='green')
    
        # *******评论数折线图
        ax8 = ax7.twinx()  # 组合图必须加这个
        ax8.plot(dm_review, color='green')  # 设置线粗细,节点样式
        plt.ylabel('评论数(万)')
        plt.plot(1, label='播放量', color="cyan", linewidth=5.0)
        plt.plot(1, label='评论数', color="green", linewidth=1.0, linestyle="-")
        plt.legend()
        plt.savefig(r'E:4.png', dpi=1000, bbox_inches='tight')
    
        plt.show()
    
    
    def main():
        url = 'https://www.bilibili.com/v/popular/rank/bangumi'  # 网址
        html = get_html(url)  # 获取返回值
        # print(html)
        info = save(html)
        view(info)
    
    
    if __name__ == '__main__':
        main()
    

    关于图表的分析和得出的结论,这里就不描述了,一千个读者就有一千个哈姆雷特,每个人有每个人的分析描述方法,相信你们能有更加透彻的见解分析。

    以上就是关于爬虫以及数据可视化分析的内容,希望能帮到你们!
    伙伴们可以到github上查看源码文件:https://github.com/Lemon-Sheep/Py/tree/master

    喜欢记得点个赞哦~

    展开全文
  • 包含了所有的源代码,本项目是一个练手的爬虫小案例。
  • python 爬虫数据可视化展示

    千次阅读 2022-02-11 10:17:54
    学了有关python爬虫数据可视化的知识,想着做一些总结,加强自己的学习成果,也能给各位小伙伴一些小小的启发。 1、做任何事情都要明确自己的目的,想要做什么,打算怎么做,做到什么样的程度,自己有一个清晰的...

    python 爬虫及数据可视化展示

    学了有关python爬虫及数据可视化的知识,想着做一些总结,加强自己的学习成果,也能给各位小伙伴一些小小的启发。

    1、做任何事情都要明确自己的目的,想要做什么,打算怎么做,做到什么样的程度,自己有一个清晰的定位,虽然计划永远赶不上变化,但是按计划走,见招拆招或许也是不错的选择。

    2、本项目是爬取豆瓣的250部电影,将电影名,电影链接,评分等信息爬取保存到本地。将相关信息以列表的形式展示在网页上,访问者可通我的网站直接挑转到豆瓣查看电影,将评分制作评分走势图,将电影制作成词云图在网页上展示,共有五个网页,可相互跳转。

    项目流程图:

    在这里插入图片描述

    数据爬取:

    # -*- codeing = utf-8 -*-
    # @Time : 2022/1/11 22:39
    # @Author : lj
    # @File : spider.PY
    # @Software: 4{PRODUCT_NAME}
    import bs4  # 网页解析,获取数据 对网页的数据进行拆分
    import re   #正则表达式,进行文字匹配   对数据进行提炼
    import urllib.request,urllib.error  #指定url 获取网页数据 怕网页
    import xlwt  #进行excel 操作  存再excel中
    import sqlite3 #进行sqllite 数据库操作 存在数据库中
    import time
    # 主函数
    def main():
        # 调用函数
        url = "https://movie.douban.com/top250?start="
        datalist1 = allData(url)
        # savepath = "豆瓣电影top250.xls"
        # savedata(datalist1,savepath)
        dbpath = "move.db"
        savedatasql(datalist1,dbpath)
    #匹配所需内容的正则表达式
    linkpattern = re.compile(r'<a href="(.*?)/">')
    #匹配图片的正则表达式
    imagepattern = re.compile(r'<img .*src=".*"/>',re.S)#re.S 忽略换行符,.表示除了换行符以外的所有字符
    #匹配影名的正则表达式
    namepattern = re.compile(r'<span class="title">(.*)</span>')
    # 影片评分
    gradepattern = re.compile(r'<span class="rating_num" property="v:average">(.*)</span>')
    # 评价人数
    peoplepattern = re.compile(r'<span>(\d*)人评价</span>')#(\d*) 零个或多个
    #概况
    thinkpattern = re.compile(r'<span class="inq">(.*)</span>')
    #影片的相关内容
    contentpattern = re.compile(r'<p class="">(.*?)</p>',re.S)#忽略换行符
    
    #1、爬取一个网页
    def getData(url1):
        head = {
            "User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:30.0) Gecko/20100101 Firefox/30.0"}
        request = urllib.request.Request(url1,headers=head)
        html = ""
        try:
            response = urllib.request.urlopen(request)
            html = response.read().decode("utf-8")
            # print(html)
        except urllib.error.URLError as e:
            if hasattr(e,"code"):
                print(e.code)
            if hasattr(e,"reason"):
                print(e.reason)
        return html  #返回给调用的地方
    # 2、爬取所有网页,匹配分析
    def allData(url):
        datalist = []
        for i in range(0, 10):  # 左闭右开 调用十次,每次二十五条信息
            url1 = url + str(i * 25)
            html = getData(url1) #保存获取到的网页源码
            time.sleep(1)
            # 逐页解析
            soup = bs4.BeautifulSoup(html,"html.parser") #返回树型结构
            for item in soup.find_all('div',class_="item"): #查找符合要求的字符串,返回列表,class加下划线
                data = []
                item = str(item)
                #link 获取到影片的超链接
                link = re.findall(linkpattern,item)[0]
                data.append(link)
                # 影片图片
                image = re.findall(imagepattern,item)[0]
                data.append(image)
                # 影片名
                name = re.findall(namepattern,item)
                if(len(name)==2):
                    chinaname = name[0]
                    data.append(chinaname)
                    outername = name[1].replace("/","")#.replace("/","") 列表内置的方法,将/替换为空""
                    data.append(outername)
                else:
                    data.append(name[0])
                    data.append('  ')#外文名空出来
                # 影片评分
                grade = re.findall(gradepattern,item)[0]
                data.append(grade)
                # 影片评价人数
                people = re.findall(peoplepattern, item)[0]
                data.append(people)
                # 影片概况
                think = re.findall(thinkpattern, item)
                if len(think) != 0:
                    think = think[0].replace("。","")
                    data.append(think)
                else:
                    data.append("  ")
                # 影片内容
                content = re.findall(contentpattern, item)[0]
                content = re.sub('<br(\s+)?/>(\s+)?'," ",content)#替换内容中多余的符号和内容
                content = re.sub('/'," ",content)
                data.append(content.strip())#去除列表中的空格
                datalist.append(data)
        return datalist
    #3、保存数据到excel
    # def savedata(datalist1,savepath):
    #     workplace = xlwt.Workbook(encoding="utf-8",style_compression=0)#style_compression=0·压缩样式
    #     worksheet = workplace.add_sheet("豆瓣电影top250",cell_overwrite_ok="true")#cell_overwrite_ok=true 是否可以覆盖
    #     col = ('电影详情链接','电影图片链接','影片中文名','影片外文名','评分','评价人数','概况','影片内容')
    #     for i in range(0,8):
    #         worksheet.write(0,i,col[i])
    #     for i in range(0,250):
    #         print("打印了%d条" %(i+1))
    #         databuffer = datalist1[i]
    #         for j in range(0,8):
    #             worksheet.write(i+1,j,databuffer[j])
    #     workplace.save(savepath) #保存
    #3、保存数据到数据库
    def savedatasql(datalist1,dbpath):#dbpath 数据库的路径位置
        init_db(dbpath)
        conn = sqlite3.connect(dbpath)
        cur = conn.cursor()#获取一个游标,存放sql语句的执行结果
        #cur 获得了游标可存放执行结果的对象
        #将datalist1中的数据依次遍历写入数据库
        for data in datalist1:
            for index in range(len(data)):
    
                if index == 4 or index == 5:
                    continue
                # data[index] = "'" + data[index].replace(u'\xa0','') + "'"
                data[index] = data[index].replace("'", "")
                data[index] = "'"+data[index]+"'"
    
            sql = '''
                    insert into move250(
                    move_link,img_link,move_chinaname,move_foriername,grade,numbers,introduction,content)
                    values (%s)'''%",".join(data)
            #print(sql)
            cur.execute(sql)
            conn.commit()
        cur.close()
        conn.close()
        print("write successful")
    
    #创建数据库
    def init_db(dbpath):
    
        sql = '''
            create table move250
            (
            id integer primary key autoincrement,
            move_link text,
            img_link text,
            move_chinaname varchar,
            move_foriername varchar,
            grade numeric,
            numbers numeric,
            introduction text,
            content text
            )
        '''
        c = sqlite3.connect(dbpath)
        buffer = c.cursor()  # 获取游标
        buffer.execute(sql)  # 内置的方法执行sql语句
        c.commit()   #         数据提交,写入数据库
        c.close()   #          数据库关闭
        print("database create successful")
    if __name__ == "__main__":
        #调用函数
        main()
        print("爬取完毕!")
    
    
    

    数据库数据

    在这里插入图片描述

    excel数据

    在这里插入图片描述

    可视化制作

    在这里插入图片描述

    路由分配,网页渲染

    import sqlite3
    
    from flask import Flask,render_template
    
    app = Flask(__name__)
    
    @app.route('/')
    def first():  # put application's code here
        return render_template("index-1.html")
    # 每一个函数对应一个路由解析
    @app.route('/index')
    def first1():
        return render_template('index-1.html')
    
    @app.route('/movie')
    def mv():
        datalist =  []
        con = sqlite3.Connection('move.db')
        cursor = con.cursor()
        sql = "select * from move250"
        data = cursor.execute(sql)
        for items in data:
            datalist.append(items)
        cursor.close()
        con.close()
    
        return render_template('about.html',mmm = datalist)
    
    @app.route('/score')
    def sc():
        x = []
        y = []
        con = sqlite3.Connection('move.db')
        cursor = con.cursor()
        sql = "select grade,count(grade) from move250 group by grade"
        data1 = cursor.execute(sql)
        for ite in data1:
           x.append(ite[0])
           y.append(ite[1])
        cursor.close()
        con.close()
        return render_template('services.html',score = x,number = y)
    
    @app.route('/word')
    def wd():
        return render_template('projects-details.html')
    
    @app.route('/team')
    def te():
        return render_template('team.html')
    
    if __name__ == '__main__':
        app.run()
    

    网页源码,由于网页源码过多,只放一页

    网页效果

    在这里插入图片描述

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <style>
            #container{
                border: 2px solid red;
                height: 1000px;
                width: 1200px;
                top: 50px;
                left: 100px;
            }
        </style>
        
        <!-- ========== Meta Tags ========== -->
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <meta name="description" content="Buskey - Corporate Business Template">
    
        <!-- ========== Page Title ========== -->
        <title>Buskey - Corporate Business Template</title>
    
        <!-- ========== Start Stylesheet ========== -->
        <link href="../static/css/plugins.min.css" rel="stylesheet">
        <link href="../static/css/flaticon-business-set.css" rel="stylesheet">
        <link href="../static/css/style.css" rel="stylesheet">
        <link href="../static/css/responsive.css" rel="stylesheet">
        <!-- ========== End Stylesheet ========== -->
    
        <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
        <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
        <!--[if lt IE 9]>
    
    
     <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts@5/dist/echarts.min.js"></script>
        <![endif]-->
    
        <!-- ========== Google Fonts ========== -->
        <link href="../static/css/css.css" rel="stylesheet">
        <link href="../static/css/css1.css" rel="stylesheet">
    
    </head>
    
    <body>
    
        <!-- Preloader Start -->
        <div class="se-pre-con"></div>
        <!-- Preloader Ends -->
    
        <!-- Start Header Top 
        ============================================= -->
        <div class="top-bar-area bg-theme text-light">
            <div class="container">
                <div class="row">
                    <div class="col-md-9">
                        <div class="info box">
                            <ul>
                                <li>
                                    <div class="icon">
                                        <i class="fas fa-map-marker-alt"></i>
                                    </div>
                                    <div class="info">
                                        <p>
                                            china
                                        </p>
                                    </div>
                                </li>
                                <li>
                                    <div class="icon">
                                        <i class="fas fa-envelope-open"></i>
                                    </div>
                                    <div class="info">
                                        <p>
                                            1751108164@qq.com
                                        </p>
                                    </div>
                                </li>
                                <li>
                                    <div class="icon">
                                        <i class="fas fa-mobile-alt"></i>
                                    </div>
                                    <div class="info">
                                        <p>
                                            +123 456 7890
                                        </p>
                                    </div>
                                </li>
                            </ul>
                        </div>
                    </div>
                    <div class="topbar-social col-md-3">
    
                    </div>
                </div>
            </div>
        </div>
        <!-- End Header Top -->
    
        <!-- Header 
        ============================================= -->
        <header>
    
            <!-- Start Navigation -->
            <nav class="navbar navbar-default navbar-sticky bootsnav">
    
                <div class="container">
    
                    <!-- Start Header Navigation -->
                    <div class="navbar-header">
                        <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar-menu">
                            <i class="fa fa-bars"></i>
                        </button>
                        <a class="navbar-brand" href="index.html">
                            <img src="../static/picture/logo-light.png" class="logo logo-display" alt="Logo">
                        </a>
                    </div>
                    <!-- End Header Navigation -->
    
                    <!-- Collect the nav links, forms, and other content for toggling -->
                    <div class="collapse navbar-collapse" id="navbar-menu">
                        <ul class="nav navbar-nav navbar-right" data-in="#" data-out="#">
                            <li class="dropdown">
                                <a href="index-1.html" class="dropdown-toggle active" data-toggle="dropdown">首页</a>
    
                            </li>
                            <li>
                                <a href="about.html">电影列表</a>
                            </li>
                            <li>
                                <a href="">评分</a>
                            </li>
                            <li class="dropdown">
                                <a href="projects-details.html" class="dropdown-toggle" data-toggle="dropdown">词云</a>
    
                            </li>
                            <li class="dropdown">
                                <a href="team.html" class="dropdown-toggle" data-toggle="dropdown">团队</a>
    
                            </li>
                        </ul>
                    </div><!-- /.navbar-collapse -->
                </div>
    
            </nav>
            <!-- End Navigation -->
    
        </header>
        <!-- End Header -->
    
        <!-- Start Breadcrumb
        ============================================= -->
        <div class="breadcrumb-area shadow dark bg-fixed text-center padding-xl text-light" style="background-image: url(../static/image/21.jpg);">
            <div class="container">
                <div class="row">
                    <div class="col-md-6 col-sm-6 text-left">
                        <h1>影线评分</h1>
                    </div>
                    <div class="col-md-6 col-sm-6 text-right">
    
                    </div>
                </div>
            </div>
        </div>
        <!-- End Breadcrumb -->
    
        <!-- Start Fun Factor -->
    
        <!-- Start Fun Factor -->
    <div class="fun-factor-area default-padding text-center bg-fixed shadow theme-hard parallax parralax-shadow" data-parallax="scroll" style="background-image: url(../static/image/12.jpg);">
            <div class="container">
                <div class="row">
                    <div class="col-md-12">
                        <a href="about.html">
                        <div class="col-md-3 col-sm-6 item">
                            <div class="fun-fact">
                                <i class="flaticon-world-map"></i>
                                <div class="timer" data-to="250" data-speed="5000"></div>
                                <span class="medium">经典电影</span>
                            </div>
                        </div>
                            </a>
                        <a href="services.html">
                        <div class="col-md-3 col-sm-6 item">
                            <div class="fun-fact">
                                <i class="flaticon-gears"></i>
                                <div class="timer" data-to="1" data-speed="5000"></div>
                                <span class="medium">评分统计</span>
                            </div>
                        </div>
                            </a>
                        <a href="projects-details.html">
                        <div class="col-md-3 col-sm-6 item">
                            <div class="fun-fact">
                                <i class="flaticon-id-card"></i>
                                <div class="timer" data-to="5693" data-speed="5000"></div>
                                <span class="medium">高频词汇</span>
                            </div>
                        </div>
                            </a>
                        <a href="team.html ">
                        <div class="col-md-3 col-sm-6 item">
                            <div class="fun-fact">
                                <i class="flaticon-id"></i>
                                <div class="timer" data-to="5" data-speed="5000"></div>
                                <span class="medium">专业团队</span>
                            </div>
                        </div>
                            </a>
                    </div>
                </div>
            </div>
        </div>
        <!-- End Fun Factor -->
        <!-- Start Services
        ============================================= -->
        <div class="carousel-services-area bg-gray">
            <div class="container-box oh">
                <div class="carousel-service-items owl-carousel owl-theme">
                    <div id="container" ></div>
                </div>
            </div>
        </div>
        <!-- End Services -->
    
        <!-- jQuery Frameworks
        ============================================= -->
    
         <!-- echarts 图表
        ============================================= -->
        <script src="../static/js/plugins.min.js"></script>
        <script src="../static/js/main.js"></script>
            <script type="text/javascript" src="echarts.min.js"></script>
            <!-- Uncomment this line if you want to dataTool extension
            <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts@5/dist/extension/dataTool.min.js"></script>
            -->
            <!-- Uncomment this line if you want to use gl extension
            <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts-gl@2/dist/echarts-gl.min.js"></script>
            -->
            <!-- Uncomment this line if you want to echarts-stat extension
            <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts-stat@latest/dist/ecStat.min.js"></script>
            -->
            <!-- Uncomment this line if you want to use map
            <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts@5/map/js/china.js"></script>
            <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts@5/map/js/world.js"></script>
            -->
            <!-- Uncomment these two lines if you want to use bmap extension
            <script type="text/javascript" src="https://api.map.baidu.com/api?v=2.0&ak=<Your Key Here>"></script>
            <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts@{{version}}/dist/extension/bmap.min.js"></script>
            -->
    
            <script type="text/javascript">
    var dom = document.getElementById("container");
    var myChart = echarts.init(dom);
    var app = {};
    
    var option;
    
    option = {
      xAxis: {
        type: 'category',
        data: [8.3,8.4,8.5,8.6,8.7,8.8,8.9,9,9.1,9.2,9.3,9.4,9.5,9.6,9.7]
      },
      yAxis: {
        type: 'value'
      },
      series: [
        {
          data: [1,3,9,23,40,40,39,15,28,17,20,7,4,3,1,],
          type: 'bar',
          showBackground: true,
          backgroundStyle: {
            color: 'rgba(180, 180, 180, 0.2)'
          }
        }
      ]
    };
    
    option && myChart.setOption(option);
            </script>
    
    </body>
    </html>
    

    网页的免费模板很多,可以挑选自己喜欢的进行修改,并插入图表等。

    词云图片制作,本项目采用电影的简介制作

    # -*- codeing = utf-8 -*-
    # @Time : 2022/2/2 12:53
    # @Author : lj
    # @File : testcloud.PY
    # @Software: 4{PRODUCT_NAME}
    import jieba
    from matplotlib import pyplot as plt
    from wordcloud import WordCloud
    from PIL import Image
    import numpy as np
    import sqlite3
    # 主要的流程,1.jieba提取文字,2.生成词云
    #准备好数据
    con = sqlite3.connect('move.db')
    cur = con.cursor()
    sql = 'select introduction from move250'
    data = cur.execute(sql)
    text = ""
    for item in data:
        text = text + item[0]
    # print(text)
    cur.close()
    con.close()
    #文本分词分句
    cut = jieba.cut(text)
    r = ' '.join(cut)
    
    print(len(r))
    
    # 处理图片的
    img = Image.open(r'.\templates\TEST\img\img/ll.jpg')
    img_arrays = np.array(img)  #将图片转换为数组
    
    
    #词云库封装一个对象
    wc =WordCloud(
        background_color='white',  #输出图片的颜色
         mask=img_arrays,    #导入处理好的图片
        font_path = 'STXINWEI.TTF' #字体的文件
    )
    #词云对象处理已经分好的词
    wc.generate(r)
    
    
    #绘制图片,plt matplotlib的库别名
    fig = plt.figure(1)  #matplotlib库figure方法可绘图
    plt.imshow(wc)   #按照wc的规则显示图片
    plt.axis('off')  #不显示x轴
    
    # plt.show() #生成的词云图片
    
    #输出词云图片到文件中,设置清晰度
    plt.savefig(r'.\templates\TEST\img\img/wordcloud2.jpg',dpi=800)
    

    词云图展示:

    在这里插入图片描述

    将制作好的图片放在网页的合适网页展示即可


    在这里插入图片描述

    至此此项完成

    问题:1、爬取之后在数据库中的数据无法在网页上显示。

    2、先查看网页后在网页中跳转没有问题,但是通过端口路径访问页面之后跳转到其他网页就无法跳转。欢迎大佬指正。

    展开全文
  • Python爬虫数据可视化实战.html
  • python爬虫+数据可视化项目(一)爬取目标:中国天气网(起始url:http://www.weather.com.cn/textfc/hb.shtml#)爬取内容:全国实时温度最低的十个城市气温排行榜使用工具:requests库实现发送请求、获取响应。...

    python爬虫+数据可视化项目(一)

    爬取目标:中国天气网(起始url:http://www.weather.com.cn/textfc/hb.shtml#)

    爬取内容:全国实时温度最低的十个城市气温排行榜

    使用工具:requests库实现发送请求、获取响应。

    beautifulsoup实现数据解析、提取和清洗

    pyechart模块实现数据可视化

    爬取结果:柱状图可视化展示:

    直接放代码(详细说明在注释里,欢迎同行相互交流、学习~):

    1 import requests

    2 from bs4 import beautifulsoup

    3 from pyecharts import bar

    4

    5 all_data = []

    6 def send_parse_urls(start_urls):

    7 headers = {

    8 "user-agent": "mozilla/5.0 (compatible; yandexbot/3.0; +http://yandex.com/bots)"

    9 }

    10 for start_url in start_urls:

    11 response = requests.get(start_url,headers=headers)

    12 # 编码问题的解决

    13 response = response.text.encode("raw_unicode_escape").decode("utf-8")

    14 soup = beautifulsoup(response,"html5lib") #lxml解析器:性能比较好,html5lib:适合页面结构比较混乱的

    15 div_tatall = soup.find("div",class_="conmidtab") #find() 找符合要求的第一个元素

    16 tables = div_tatall.find_all("table") #find_all() 找到符合要求的所有元素的列表

    17 for table in tables:

    18 trs = table.find_all("tr")

    19 info_trs = trs[2:]

    20 for index,info_tr in enumerate(info_trs): # 枚举函数,可以获得索引

    21 # print(index,info_tr)

    22 # print("="*30)

    23 city_td = info_tr.find_all("td")[0]

    24 temp_td = info_tr.find_all("td")[6]

    25 # if的判断的index的特殊情况应该在一般情况的后面,把之前的数据覆盖

    26 if index==0:

    27 city_td = info_tr.find_all("td")[1]

    28 temp_td = info_tr.find_all("td")[7]

    29 city=list(city_td.stripped_strings)[0]

    30 temp=list(temp_td.stripped_strings)[0]

    31 all_data.append({"city":city,"temp":temp})

    32 return all_data

    33

    34 def get_start_urls():

    35 start_urls = [

    36 "http://www.weather.com.cn/textfc/hb.shtml",

    37 "http://www.weather.com.cn/textfc/db.shtml",

    38 "http://www.weather.com.cn/textfc/hd.shtml",

    39 "http://www.weather.com.cn/textfc/hz.shtml",

    40 "http://www.weather.com.cn/textfc/hn.shtml",

    41 "http://www.weather.com.cn/textfc/xb.shtml",

    42 "http://www.weather.com.cn/textfc/xn.shtml",

    43 "http://www.weather.com.cn/textfc/gat.shtml",

    44 ]

    45 return start_urls

    46

    47 def main():

    48 """

    49 主程序逻辑

    50 展示全国实时温度最低的十个城市气温排行榜的柱状图

    51 """

    52 # 1 获取所有起始url

    53 start_urls = get_start_urls()

    54 # 2 发送请求获取响应、解析页面

    55 data = send_parse_urls(start_urls)

    56 # print(data)

    57 # 4 数据可视化

    58 #1排序

    59 data.sort(key=lambda data:int(data["temp"]))

    60 #2切片,选择出温度最低的十个城市和温度值

    61 show_data = data[:10]

    62 #3分出城市和温度

    63 city = list(map(lambda data:data["city"],show_data))

    64 temp = list(map(lambda data:int(data["temp"]),show_data))

    65 #4创建柱状图、生成目标图

    66 chart = bar("中国最低气温排行榜") #需要安装pyechart模块

    67 chart.add("",city,temp)

    68 chart.render("tempture.html")

    69

    70 if __name__ == '__main__':

    71 main()

    请关注,未完待续!

    希望与广大网友互动??

    点此进行留言吧!

    展开全文
  • python爬虫数据可视化分析

    万次阅读 多人点赞 2021-01-07 09:46:58
    对于刚开始学习编程的小伙伴来说,肯定都对爬虫有一定的兴趣,对于新手来说,从Python爬虫如入门应该是简单易懂的。Python是一种跨平台的计算机程序设计语言。 是一个高层次的结合了解释性、编译性、互动性和面向...
  • 基于python的网络爬虫爬取天气数据可视化分析 python程序设计报告 源代码+csv文件+设计报告 python期末简单大作业(自己写的,重复率低) 利用python爬取了网站上的城市天气,并用利用可视化展示,有参考文献有...
  • Python爬虫数据可视化

    千次阅读 2022-05-15 10:58:23
    Python爬虫——matplotlib和pandas库数据可视化 导入需要的第三方库 import matplotlib.pyplot as plt import seaborn as sns import pandas as pd import requests import urllib3 import matplotlib as mpl ...
  • Python 网络爬虫数据可视化

    千次阅读 多人点赞 2021-01-11 18:47:13
    1.3 数据可视化 2 1.4 Python环境介绍 2 1.4.1 简介 2 1.4.2 特点 3 1.5 扩展库介绍 3 1.5.1 安装模块 3 1.5.2 主要模块介绍 3 ① pandas模块 3 ② requests模块 4 ③ bs4模块 4 ④ selenium模块 4 ⑤ matplotlib...
  • Python爬虫、Flask框架与ECharts实现数据可视化,源码无错误!希望大家可以好好学习,用好资源,原创,搬运请表明来源,谢谢!又不足请大佬们指正!
  • 基于Python爬虫的电影数据可视化分析.pdf
  • Python爬虫数据可视化网页实现

    千次阅读 2021-10-29 15:57:31
    目录 前言 一、爬虫部分 (1)基本思路 (2)库的使用 二、数据库部分 三、Flask框架部分 ...四、数据可视化部分 ...[Python爬虫编程基础5天速成(2021全新合集)Python入门+数据分析] 学前基础: ...
  • Python爬虫实战数据可视化分析

    千次阅读 2021-03-06 16:44:42
     int(total_page[0])+1): data = { "pn":i, "kd":"python" } print(i) page_url = "https://www.lagou.com/jobs/positionAjax.json?px=default&city=%s&needAddtionalResult=false"%city referer_url = ...
  • 基于Python爬虫打造数据可视化模型[视频课程].txt打包整理.zip
  • 实战性非常强的一套Python爬虫数据分析+数据可视化教程。课程以多个实例项目为例,将Python爬虫数据可视化技术一一罗列,让同学们快速掌握实战技术,让技术和数据的应用再次得到升华。 视频大小4.7G
  • 配套博文https://blog.csdn.net/szm1234/article/details/112717515,Python疫情数据爬虫可视化显示,中国地图可视化显示
  • 主要介绍了Python爬取数据并实现可视化代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • Python爬虫数据可视化总结

    千次阅读 2021-09-15 19:43:41
    工具: Python,Flask,JS,CSS,HTML,WordCloud 爬取数据并存入数据库 一.导入需要的包 from bs4 import BeautifulSoup # 网页解析,获取数据 import re # 正则表达式,进行文字匹配 import xlwt # 进行excel操作 import ...
  • python 爬虫数据可视化

    千次阅读 多人点赞 2020-07-08 11:37:12
    python 爬虫数据可视化 1.引言 Web已经成为日新月异迅速发展的网络信息技术中的信息载体,如何有效地提取和利用搜索引擎获得互联网最有用的、可以免费公开访问的数据集,查找用户所需的价值数据或者相近的价值...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 32,634
精华内容 13,053
热门标签
关键字:

python爬虫加数据可视化