Python爬虫+数据清洗+数据可视化基础案例

前言

  最近迷上了Python爬虫,我们的hadoop课程也正好涉及到了这个内容,所以就想结合课程内容(爬取京东手机评论https://item.jd.com/100003060627.html#crumb-wrap)写一篇关于python爬虫到数据可视化的完整流程。

  打开目标网站https://item.jd.com/100003060627.html#crumb-wrap我们要爬取该手机的评论信息,就要先找到“我们点击查看评论时,浏览器向服务器请求来的文件”在该文件中有我们需要的url地址和求头(请求头包括referer:重定向 和 user-agent:用户代理),浏览器都会有一些反爬虫的措施,所以需要使用该请求头去模拟浏览器向服务器请求数据。至于怎么找到我们需要的文件,博主只能说:这需要一些前端的知识和自己的经验,爬虫做多了 额…不对,这样不太好,爬虫是有些偏灰暗的,我是说熟能生巧啊。可以先看一下文件的Preview,如下即为我们需要的信息文件,然后点击Headers先复制我们需要的信息到编译器中,为我们待会写代码时准备:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

获取并筛选数据

  拿到我们需要的url地址和请求头后,先分析一下url地址,主要是它的后半部分,它是由字符串拼接而成的,比如这里的url地址:https://sclub.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98vv21252&productId=100003060627&score=0&sortType=5&page=0&pageSize=10&isShadowSku=0&fold=1
在这里**page=**后面跟的就是第几页评论的信息(数据),不信你点击第二页评论时page=后面就是1&pageSize=10&isShadowSku=0&fold=1,由0变为了1(感觉在侮辱自己的智商(艹皿艹)),由此我们可以将url地址切割为两部分,将变化的数据用变量表示,然后再将两部分拼接得到最终的url地址,我们就可以通过控制变量来获取对应的数据量了,如下为切割和拼接的过程和结果

#切割后第一部分
url_header="https://sclub.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98vv19450&productId=100003060627&score=0&sortType=5&page="
#切割后第二部分
url_tail="&pageSize=10&isShadowSku=0&rid=0&fold=1"
#拼接得到最终url地址(后面用循环改变page的值,此处加1,即从第二页开始获取数据,也可以不加1)
url_mate20=url_header + str(page+1) + url_tail

现在正式开始搬砖了,先导入我们需要用到的两个库,也可以叫包、模块

import requests
import json
  利用请求头和拼接得到的最终url,循环请求每一条评论数据,并将请求到的数据转化格式为json格式保存为本地的txt文件,如下我保存到自己电脑D:\python_data目录下
    for page in range(20):
        url_tail="&pageSize=10&isShadowSku=0&rid=0&fold=1"
        # 拼接得到最终url,并请求数据(得到键值对格式(字典)的数据)
        url_mate20=url_header + str(page+1) + url_tail
        res=requests.get(url_mate20,headers=headers)

        # 用json.loads将数据转化格式为json格式
        data=json.loads(res.text[27:-2])
        comment=(data['comments'])

        # 将数据遍历保存到本地的.txt文件中,
        for i in comment:
            # 注意带参数"a",如果是w就会覆盖原有内容,这样子你只能得一条评论
            honor20i_text=open('D:\\python_data\\honor20i_text.txt','a')
            honor20i_text.write('%s\n'%i['content'])
            honor20i_text.close()

  此时运行程序会在指定目录下生成一个txt文件,打开可看见即为我们获取到的评论数据,看起来有点乱,可以在请求的时候自己做一下格式美化,后面我要将获取到的txt数据可视化(词云),所以这里就不用做美化了啊
在这里插入图片描述

数据可视化(词云形式,激动ヾ(✿゚▽゚)ノ)

同样先导包

import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt #可视化包
  下面读取我们获取到的txt文件内容,再使用jieba来处理剪切我们爬取的文本内容,继续处理对剪过的文本以空格拼接起来,然后就是利用matplotlib包设置一下显示的字体样式和保存显示结果了
import jieba
    from wordcloud import WordCloud
    import matplotlib.pyplot as plt #可视化包

    #读取爬虫保存下载的数据
    file_text = open('D:\\python_data\\honor20i_text.txt','r').read()

    #再使用jieba来处理剪切我们爬取文本内容
    cut_text = jieba.cut(file_text)

    #继续处理对剪过的文本以空格拼接起来,注意一下这里“”有空格的
    result = " ".join(cut_text)

    wc_cloud = WordCloud(
        font_path='D:\python_data\\pzh.ttf',     #字体的路径
        background_color='black',   #背景颜色
        width=1200,
        height=600,
        max_font_size=150,            #字体的大小
        min_font_size=30,			  #字体的大小
        max_words=10000
    )
    wc_cloud.generate(result)
    wc_cloud.to_file('D:\\python_data\\LingDucloud.png')    #图片保存

    #图片展示
    plt.figure('凌度img')   #图片显示的名字
    plt.title('JD_mate20')
    plt.imshow(wc_cloud)
    plt.axis('off')
    plt.show()

  注意这里用到了.ttf字体包,没有字体包生成的图片是火星文哦😂😂需要字体包的,可以到微信公众号 编程之外 输入关键词“字体包”免费获取,欢迎小伙伴入坑哦!😁😁😁

font_path='D:\python_data\\pzh.ttf'

在这里插入图片描述

在这里插入图片描述

  如下为运行后的可视化词云效果,字体越大越明显的词汇说明在评论内容中出现的次数就越多,此时在指定的路径目录下也会生成相应的图片
在这里插入图片描述
在这里插入图片描述

  下面为全部源码,将数据获取和数据可视化分别写成两个方法,在main中分别调用就不用新建两个python文件啦。哪里还不太懂,或者有什么问题(包括和我获取.ttf字体包)欢迎在留言区留下你的脚印哦。

import requests
import json

#数据爬取方法
def gain_data():
    #请求头(包括referer:重定向(反爬虫) user-agent:用户代理)
    headers={
        'referer':'Referer: https://item.jd.com/100003060627.html',
        'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 '
                     '(KHTML, like Gecko) Chrome/75.0.3770.80 Safari/537.36'
    }
    #url地址
    url_header="https://sclub.jd.com/comment/productPageComments.action?callback=" \
               "fetchJSON_comment98vv19450&productId=100003060627&score=0&sortType=5&page="

    for page in range(20):
        url_tail="&pageSize=10&isShadowSku=0&rid=0&fold=1"
        # 拼接得到最终url,并请求数据(得到键值对格式(字典)的数据)
        url_mate20=url_header + str(page+1) + url_tail
        res=requests.get(url_mate20,headers=headers)

        # 用json.loads将数据转化格式为json格式
        data=json.loads(res.text[27:-2])
        comment=(data['comments'])

        # 将数据遍历保存到本地的.txt文件中,
        for i in comment:
            # 注意带参数"a",如果是w就会覆盖原有内容,这样子你只能得一条评论
            honor20i_text=open('D:\\python_data\\honor20i_text.txt','a')
            honor20i_text.write('%s\n'%i['content'])
            honor20i_text.close()


#词云可视化方法
def mate20_view():
    import jieba
    from wordcloud import WordCloud
    import matplotlib.pyplot as plt #可视化包

    #读取爬虫保存下载的数据
    file_text = open('D:\\python_data\\honor20i_text.txt','r').read()

    #再使用jieba来处理剪切我们爬取文本内容
    cut_text = jieba.cut(file_text)

    #继续处理对剪过的文本以空格拼接起来,注意一下这里“”有空格的
    result = " ".join(cut_text)

    wc_cloud = WordCloud(
        font_path='D:\python_data\\pzh.ttf',     #字体包的路径
        background_color='black',   #背景颜色
        width=1200,
        height=600,
        max_font_size=150,            #字体的大小
        min_font_size=30,			  #字体的大小
        max_words=10000
    )
    wc_cloud.generate(result)
    wc_cloud.to_file('D:\\python_data\\LingDucloud.png')    #图片保存

    #图片展示
    plt.figure('凌度img')   #图片显示的名字
    plt.title('JD_mate20')
    plt.imshow(wc_cloud)
    plt.axis('off')
    plt.show()

if __name__ == '__main__':
    mate20_view()

文章到这里就结束啦,感谢参考:
https://www.jb51.net/article/154261.htm
https://blog.csdn.net/weixin_42946604/article/details/88079475

编程之外

  这是一篇很基础的关于python爬虫的博客文章,大佬看见了一定要在评论区留下宝贵的建议脚印呀!大二的时候就学习过Python这方面的知识了,那时候没什么兴趣,就没有好好学┭┮﹏┭┮,现在也是还在自学中,也看了很多大佬的文章,受益匪浅。最后告诉一下小同学,如果是计算机类、编程类专业并且要走专业路线的话,一定要好好学习数学,今后的人工智能、大数据、数据建模你将会感受到数学的重要性,说到这里真想给自己两jiao(つД`)过去两年怎么不好好学高数、线性代数、概率论、离散数学和算法,精神上再给自己一jiao!
在这里插入图片描述
在这里插入图片描述

编程之外
  • 50
    点赞
  • 426
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
教案标题:Python爬虫、数据分析与可视化 教案简介: 本教案旨在教授Python爬虫、数据分析和可视化的基本概念和技术。通过学习本教案,学生将能够掌握如何使用Python编写爬虫程序,获取并分析网络数据,然后利用可视化工具将分析结果以图表形式展示出来。通过这一过程,学生不仅能够掌握Python编程的基础知识,还能够了解如何在现实生活中应用这些技术进行数据分析和可视化。 教案内容: 1. Python爬虫基础 - 网络爬虫的概念及其应用领域 - 使用Python的第三方库BeautifulSoup和requests进行网页解析和访问 - 网络数据抓取和存储的基本方法 2. 数据分析基础 - 数据分析的概念和基本过程 - 使用Python的pandas库进行数据处理和分析 - 数据清洗、转换和整合的方法 3. 数据可视化 - 数据可视化的重要性和应用领域 - 使用Python的matplotlib和seaborn库进行数据可视化 - 不同类型的图表和图形的绘制方法 4. 实际应用案例 - 实际数据分析和可视化案例的讲解和分析 - 学生参与实际项目的设计和实施 教学目标: 通过本教案的学习,学生将能够: 1. 理解Python爬虫的基本原理和应用方法; 2. 掌握数据分析的基本概念和技术,包括数据清洗、转换和整合; 3. 学会使用Python的matplotlib和seaborn库进行数据可视化; 4. 运用所学知识解决实际问题,进行数据分析和可视化。 教学方法: 本教案采用理论与实践相结合的教学方法,其中理论部分通过讲解和示范进行,实践部分通过实际项目和案例分析进行。教师将充当指导者和引导者的角色,鼓励学生主动参与讨论和解决问题。 学生评估: 学生的学习成绩将通过学习笔记、实际项目和期末考试进行评估。学生需要完成一个小组项目,包括数据爬取、清洗、分析和可视化,并撰写项目报告。 教学资源: 为了完成本教案的学习,学生需要准备以下资源: - 一台配置良好的电脑; - 安装Python编程环境,包括Python解释器和相应的第三方库; - 下载和安装相应的开发工具和开发环境; - 互联网连接和浏览器。 通过本教案的学习,学生将获得基本的Python爬虫、数据分析和可视化的技能,为日后的数据科学和程序开发奠定良好的基础

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值