通过数据分析小窥测试行业现状(图)

行业知识 创建于:2021-10-20
  通过前面的爬虫,我们可以得到一些数据,通过数据分析,可以得到一些结论。
  现在各个公司都在搞大数据,前段时间支付宝大数据分析我们的年度账单。
  我们普通人也可以搞搞大数据,通过数据分析,来决策我们的生活
  可以爬取股票或者财经数据,来分析走势或者判断那个收益更高。
  可以爬取电商数据,来判断那个商品性价比更高,更受欢迎。
  爬取微博,各种新闻以及评论,看事态如何发展,看别人如何看待热点事件的。
  爬取美食,决定去哪里吃饭。
  爬取豆瓣电影,看看哪部电影值得去看看。
  虽然很多网商都有评价系统,但是很多并不能代表我的想法。比如大众点评上,可以看热度,口味,环境,服务,价格,距离等。但是数据太多,一个一个看不过来。
  而且我可能认为服务占比低,价格和口味我比较看重,系统的推荐不符合我的需求。我可以从中爬取数据,通过数据分析,按照我的衡量标准综合考量,达到我的目的。
  对于外地人来说,租房或者买房,比较头疼,没有那么多时间实地查看,网上的信息似乎又不那么靠谱,有灌水的,刷单的。而且中介的最说得天花乱坠。怎么办,只能自己搜集信息,做初步的筛选,避免浪费很多无谓的时间。
  如何分析数据呢? 给大家介绍一个数据分析利器—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, 假如我想知道:最近一年以来,精华贴里面评论最多的是哪些。
  于是我爬精华贴里的评论数。


  import os


  import re


  import numpy as np


  import pandas as pd


  import requests


  from bs4 import BeautifulSoup


  spider_url = "https://testerhome.com/topics/excellent"


  max_page = 30


  def get_page(myurl):


  try:


  result = requests.get(myurl)


  if result.status_code != 200:


  print("fail")


  else:


  return result.content


  except Exception as e:


  print(e)


  def get_detail(num):


  result = []


  if num >= 2:


  get_url = spider_url + "?page={}".format(num)


  else:


  get_url = spider_url


  page = get_page(get_url)


  soup = BeautifulSoup(page, 'lxml')


  account = soup.select('div.count.media-right a')


  topic_re = "topics/(\d+)#"


  account_re = ">(\d+)</a>"


  m = re.findall(topic_re, str(account))


  n = re.findall(account_re, str(account))


  result.append(m)


  result.append(n)


  result_frame = pd.DataFrame(result)


  topic_frame = result_frame.T


  topic_frame.to_csv(path_or_buf="topic_frame.csv", header=False, index=False, mode='a+')



  import os


  import re


  import numpy as np


  import pandas as pd


  import requests


  from bs4 import BeautifulSoup


  spider_url = "https://testerhome.com/topics/excellent"


  max_page = 30


  def get_page(myurl):


  try:


  result = requests.get(myurl)


  if result.status_code != 200:


  print("fail")


  else:


  return result.content


  except Exception as e:


  print(e)


  def get_detail(num):


  result = []


  if num >= 2:


  get_url = spider_url + "?page={}".format(num)


  else:


  get_url = spider_url


  page = get_page(get_url)


  soup = BeautifulSoup(page, 'lxml')


  account = soup.select('div.count.media-right a')


  topic_re = "topics/(\d+)#"


  account_re = ">(\d+)</a>"


  m = re.findall(topic_re, str(account))


  n = re.findall(account_re, str(account))


  result.append(m)


  result.append(n)


  result_frame = pd.DataFrame(result)


  topic_frame = result_frame.T


  topic_frame.to_csv(path_or_buf="topic_frame.csv", header=False, index=False, mode='a+')

  import os
  import re
  import numpy as np
  import pandas as pd
  import requests
  from bs4 import BeautifulSoup
  spider_url = "https://testerhome.com/topics/excellent"
  max_page = 30
  def get_page(myurl):
  try:
  result = requests.get(myurl)
  if result.status_code != 200:
  print("fail")
  else:
  return result.content
  except Exception as e:
  print(e)
  def get_detail(num):
  result = []
  if num >= 2:
  get_url = spider_url + "?page={}".format(num)
  else:
  get_url = spider_url
  page = get_page(get_url)
  soup = BeautifulSoup(page, 'lxml')
  account = soup.select('div.count.media-right a')
  topic_re = "topics/(\d+)#"
  account_re = ">(\d+)</a>"
  m = re.findall(topic_re, str(account))
  n = re.findall(account_re, str(account))
  result.append(m)
  result.append(n)
  result_frame = pd.DataFrame(result)
  topic_frame = result_frame.T
  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)



  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)

  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)

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

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

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


  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理



2021测试行业从业人员调查问卷启动!礼品升级!实战课程三选一,干货礼包免费拿,还有更多抽奖豪礼等着你!

原文地址:http://www.51testing.com/?action-viewnews-itemid-4479344

免责声明:本文来源于互联网,版权归合法拥有者所有,如有侵权请公众号联系管理员

* 本站提供的一些文章、资料是供学习研究之用,如用于商业用途,请购买正版。

发表于:2021-10-19 09:49 作者:谢小玲 来源:知乎