通過數據分析小窺測試行業現狀
通過前面的爬蟲,我們可以得到一些數據,通過數據分析,可以得到一些結論。
現在各個公司都在搞大數據,前段時間支付寶大數據分析我們的年度賬單。
我們普通人也可以搞搞大數據,通過數據分析,來決策我們的生活。
可以爬取股票或者財經數據,來分析走勢或者判斷那個收益更高。
可以爬取電商數據,來判斷那個商品性價比更高,更受歡迎。爬取微博,各種新聞以及評論,看事態如何發展,看別人如何看待熱點事件的。爬取美食,決定去哪裡吃飯。
爬取豆瓣電影,看看哪部電影值得去看看。雖然很多網商都有評價系統,但是很多並不能代表我的想法。比如大眾點評上,可以看熱度,口味,環境,服務,價格,距離等。但是數據太多,一個一個看不過來。
而且我可能認為服務佔比低,價格和口味我比較看重,系統的推薦不符合我的需求。我可以從中爬取數據,通過數據分析,按照我的衡量標準綜合考量,達到我的目的。對於外地人來說,租房或者買房,比較頭疼,沒有那麼多時間實地查看,網上的信息似乎又不那麼靠譜,有灌水的,刷單的。而且中介的最說得天花亂墜。怎麼辦,只能自己搜集信息,做初步的篩選,避免浪費很多無謂的時間。
如何分析數據呢? 給大家介紹一個數據分析利器—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 reimport numpy as npimport pandas as pdimport requestsfrom bs4 import BeautifulSoupspider_url = "https://testerhome.com/topics/excellent"max_page = 30def 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)我就按從高到低,取前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:軟體測試 |