51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 1712|回复: 0

[转贴] 通过数据分析小窥测试行业现状

[复制链接]
  • TA的每日心情
    无聊
    10 小时前
  • 签到天数: 919 天

    连续签到: 1 天

    [LV.10]测试总司令

    发表于 2021-10-27 13:15:46 | 显示全部楼层 |阅读模式
    通过前面的爬虫,我们可以得到一些数据,通过数据分析,可以得到一些结论。
      现在各个公司都在搞大数据,前段时间支付宝大数据分析我们的年度账单。
      我们普通人也可以搞搞大数据,通过数据分析,来决策我们的生活。
      可以爬取股票或者财经数据,来分析走势或者判断那个收益更高。
      可以爬取电商数据,来判断那个商品性价比更高,更受欢迎。
      爬取微博,各种新闻以及评论,看事态如何发展,看别人如何看待热点事件的。
      爬取美食,决定去哪里吃饭。
      爬取豆瓣电影,看看哪部电影值得去看看。
      虽然很多网商都有评价系统,但是很多并不能代表我的想法。比如大众点评上,可以看热度,口味,环境,服务,价格,距离等。但是数据太多,一个一个看不过来。
      而且我可能认为服务占比低,价格和口味我比较看重,系统的推荐不符合我的需求。我可以从中爬取数据,通过数据分析,按照我的衡量标准综合考量,达到我的目的。
      对于外地人来说,租房或者买房,比较头疼,没有那么多时间实地查看,网上的信息似乎又不那么靠谱,有灌水的,刷单的。而且中介的最说得天花乱坠。怎么办,只能自己搜集信息,做初步的筛选,避免浪费很多无谓的时间。
      如何分析数据呢? 给大家介绍一个数据分析利器—pandas。
      Pandas 是python的一个数据分析包,Pandas最初被作为金融数据分析工具而开发出来,因此,pandas为时间序列分析提供了很好的支持。 Pandas的名称来自于面板数据(panel data)和python数据分析(data analysis)。
      该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。
      可以通过传递一个list对象来创建一个Series,pandas会默认创建整型索引:

    通过传递一个numpy array,时间索引以及列标签来创建一个DataFrame:

    这里不花大量篇幅来讲它,大家可以去官网学习。
      其实他主要就是一个二维列表DataFrame(很方便的加index, colum)
      很方便的转换数据(汇总,缺失,索引)
      很方便的处理清洗数据(清理,转换,合并)
      很方便的加载存储数据(文本,csv,excel,数据库,html)
      很方便聚合与分组运算(GroupBy)
      绘图和可视化(matplotlib)
      总之,很方便的处理大量的数据。
      现在就继续分析testerhome, 假如我想知道:最近一年以来,精华贴里面评论最多的是哪些。
      于是我爬精华贴里的评论数。
    1. import os
    2.   import re
    3.   import numpy as np
    4.   import pandas as pd
    5.   import requests
    6.   from bs4 import BeautifulSoup
    7.   spider_url = "https://testerhome.com/topics/excellent"
    8.   max_page = 30
    9.   def get_page(myurl):
    10.   try:
    11.   result = requests.get(myurl)
    12.   if result.status_code != 200:
    13.   print("fail")
    14.   else:
    15.   return result.content
    16.   except Exception as e:
    17.   print(e)
    18.   def get_detail(num):
    19.   result = []
    20.   if num >= 2:
    21.   get_url = spider_url + "?page={}".format(num)
    22.   else:
    23.   get_url = spider_url
    24.   page = get_page(get_url)
    25.   soup = BeautifulSoup(page, 'lxml')
    26.   account = soup.select('div.count.media-right a')
    27.   topic_re = "topics/(\d+)#"
    28.   account_re = ">(\d+)</a>"
    29.   m = re.findall(topic_re, str(account))
    30.   n = re.findall(account_re, str(account))
    31.   result.append(m)
    32.   result.append(n)
    33.   result_frame = pd.DataFrame(result)
    34.   topic_frame = result_frame.T
    35.   topic_frame.to_csv(path_or_buf="topic_frame.csv", header=False, index=False, mode='a+')
    复制代码
    其实这里取了点巧,评论数为0的,直接不爬出来,我就不需要清洗这样的数据了。

    得出一个这样的列表。
      这个列表看不出什么,只能得到精华帖的pageid,以及评论数,继续分析
    if __name__ == "__main__":
      if os.path.exists("topic_frame.csv"):
      print("is ok")
      read_topic_frame = pd.read_csv("topic_frame.csv", names=["url", "account"])
      final_frame = read_topic_frame.sort(["account"], ascending=False).head(10)
      print(final_frame)
      urls = final_frame['url']
      my_hosts = []
      for url in urls:
      host = "https://testerhome.com/topics/{}".format(url)
      my_hosts.append(host)
      final_frame['url'] = np.array(my_hosts)
      print(final_frame)
      final_frame.to_csv(path_or_buf="topic_top.csv", header=True, index=True)
      else:
      print("file not exist, need to spider")
      for page_index in range(max_page):
      get_detail(page_index)
    我就按从高到低,取前10, 其实很简单,一条语句就排序获取了前10.

    final_frame = read_topic_frame.sort(["account"], ascending=False).head(10)
    得到的结果如下:

    只知道链接,并不知道文章是什么,继续,得到:

    从中可以看出:
      大家对创新的,实用的工具,关注比较多。
      对基本的环境安装,也关注多,看来新手比较多。
      虽然现在AI,大数据等比较火,坛子里也有不少人探索和分享,但毕竟关注的人不多,都没排进前10.
      只是用坛子里的数据,做了简单的数据分析,可能不太准,也能看出当前测试发展的一些现状。

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-3-29 19:24 , Processed in 0.072973 second(s), 25 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表