標籤:

通過數據分析小窺測試行業現狀

通過前面的爬蟲,我們可以得到一些數據,通過數據分析,可以得到一些結論。

現在各個公司都在搞大數據,前段時間支付寶大數據分析我們的年度賬單。

我們普通人也可以搞搞大數據,通過數據分析,來決策我們的生活。

可以爬取股票或者財經數據,來分析走勢或者判斷那個收益更高。

可以爬取電商數據,來判斷那個商品性價比更高,更受歡迎。

爬取微博,各種新聞以及評論,看事態如何發展,看別人如何看待熱點事件的。

爬取美食,決定去哪裡吃飯。

爬取豆瓣電影,看看哪部電影值得去看看。

雖然很多網商都有評價系統,但是很多並不能代表我的想法。比如大眾點評上,可以看熱度,口味,環境,服務,價格,距離等。但是數據太多,一個一個看不過來。

而且我可能認為服務佔比低,價格和口味我比較看重,系統的推薦不符合我的需求。我可以從中爬取數據,通過數據分析,按照我的衡量標準綜合考量,達到我的目的。

對於外地人來說,租房或者買房,比較頭疼,沒有那麼多時間實地查看,網上的信息似乎又不那麼靠譜,有灌水的,刷單的。而且中介的最說得天花亂墜。怎麼辦,只能自己搜集信息,做初步的篩選,避免浪費很多無謂的時間。

如何分析數據呢? 給大家介紹一個數據分析利器—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 = "testerhome.com/topics/e"

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 = "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.

只是用罈子里的數據,做了簡單的數據分析,可能不太准,也能看出當前測試發展的一些現狀。

更多精彩: 請關注微信公眾號:python愛好部落


推薦閱讀:

webdriver介紹&與Selenium RC的比較1
軟體測試要學什麼?面試時哪些基本知識要掌握?
Selenium 2.0與Selenum 3.0介紹
認識介面測試
從0到1搭建測試自動化框架

TAG:軟體測試 |