整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          Power Query抓取網絡數據的方法,CSV格式取URL

          們使用Power BI Desktop來制作上面這個圖形,需要歷年保險保費收入的數據作為依據,網站上有數據公布:

          這個頁面的地址:

          /web/site0/tab5205/info4129096.htm

          每個月都會有一個對應的地址,要到那里找到這些個地址呢?

          我們找到了這樣一個頁面:

          這個頁面里有我們需要的每個月的數據的連接,這樣的頁面一共有8個,這8個頁面的URL是連續的。

          web/site0/tab5205/module14413/page1.htm

          就是page1到page8

          我們打開Power BI Desktop的Power Query,建立一個1到8的表

          并且把ID這一列設置成文本,這是第一步。

          第二步:要建立一個查詢,從web獲取數據,設置乘csv格式

          復制地址欄里的公式,備用。(實在記不住這些函數,這樣偷點懶,嘻嘻)

          第三步:回到開始的表,自定義列,用剛才復制的公式,修改一下。

          page后面的數字用ID替換一下。

          第四步:數據清理,我們要的是每個月的URL,這個過程稍微有點復雜,但是用到的功能很簡單,就是符號分列,篩選,替換。

          1、用<a href="分列,會直接把我們需要的URL分離出來

          2、篩選出帶有info的行

          3、再分列,用雙引號分列

          至此已經得到了我們想要的URL.

          4、為了能夠區分年月,還需要做些處理,取title后面的列,提取出來年和月,這部分就略過了。結果是這樣的:

          第五步:獲取具體數據,如果不記得函數,還是先建立一個自web的查詢,復制公式,然后自定義列。

          用URL替換網址后面的部分。

          第六步:展開并整理數據,這里要注意幾個地方

          1、刪除列要修改一下,保留年和月兩列

          2、篩選掉所有的非省市名稱的行

          3、統一所有的省市名稱,自己想想辦法吧

          4、逆透視列

          最終的結果:

          剩下的工作就回到Power BI Desktop用DAX建立度量值,作圖就可以了。

          總結一下,如果想從網頁中獲得需要的信息,就要抓住關鍵信息,Web信息有幾種格式,要從源碼中找信息,就用CSV格式,要找網頁中的信息,就用HTML格式。不管用PQ還是PY網絡抓取數據,都是一個找規律的過程,找到了規律,就能行。

          存路徑:D:\python\用Python讀取csv文件中的滬深300指數歷史交易數據

          程序名稱:readcsvhs300.py;

          數據名稱:滬深300指數歷史交易數據.csv;

          開發環境:Win7;

          開發工具:Python 3.8.2 IDLE;

          Python安裝路徑:D:\python。

          1、下載滬深300指數歷史交易數據

          在瀏覽器中打開網址http://quotes.money.163.com/trade/lsjysj_zhishu_399300.html,于網頁的右側點擊下載數據按鈕,下載滬深300指數歷史交易數據,其下載界面如圖1所示:


          圖1:滬深300指數歷史交易數據的下載界面圖

          將下載結果保存到保存路徑下,命名為:滬深300指數歷史交易數據.csv。

          2、查看csv文件中的數據

          用Excel打開滬深300指數歷史交易數據.csv文件,查看下載的滬深300指數歷史交易數據,效果如圖2所示:


          圖2:用Excel打開滬深300指數歷史交易數據.csv的效果圖

          3、編程讀取csv文件中的數據

          運行Python 3.8.2 IDLE開發工具,編程讀取csv文件中滬深300指數歷史交易數據的源代碼,將源代碼保存到保存路徑下,命名為:readcsvhs300.py。

          源代碼及其注釋如下所示:

          import csv #導入csv模塊 
          csv_file=csv.reader(open('滬深300指數歷史交易數據.csv','r')) #以只讀方式打開csv文件
          csv_content=[] #定義存儲整個csv文件的列表
          for line in csv_file: #按行對csv文件進行循環
              csv_content.append(line) #按行將csv文件讀取到列表中
          for line in range(0,20,1): #對前20行進行循環
              print(csv_content[line][0]+'  '+csv_content[line][3]) #打印每行的第0列和第3列

          4、運行程序

          在Python 3.8.2 IDLE開發工具中,按F5鍵,運行readcsvhs300.py程序,運行結果如圖3所示:


          圖3:用Python讀取csv文件中的滬深300指數歷史交易數據運行結果圖

          ablib 是 requests 庫作者常年維護的一個 python 第三方庫,可以操作 Excel 等多種文件格式變成一種通用數據集。

          tablib 支持的主要數據格式有:

          • xls, 老版 office 的 Excel 文件格式;
          • xlsx 系列,新版 office 文件格式;
          • JSON
          • YAML
          • HTML
          • CSV
          • df,(pandas 的 DataFrame, 需要安裝 pandas)

          tablib 操作測試用例的基礎使用非常簡單,你只需要記住以下 2 點:

          1. 使用 import_set 導入 Excel 文件
            with open('demo.xls', 'rb') as f:
              # 接受 2 個參數,讀出來的數據和讀取的文件格式
              data = tablib.import_set(f.read(), 'xls')
              print(data)
          復制代碼
          1. 使用 DataSet 創建 Excel 表格
            data = tablib.Dataset(*data_list, headers=headers,title='測試用例')
          復制代碼

          現在來進行更精確的操作:

          行列數據操作

          先通過加載 Excel 文件獲取到數據

            a = tablib.import_set(f.read(), 'xls')
          復制代碼

          a 得到的是一個列表,每個元素是每一行數據。

          1. 獲取行
            # 獲取第一行第一列
          print(a[0][0])
          
          # 獲取第一行的 url 列
          print(a.dict[0]['url'])
          
          # 獲取前 2 行
          print(a[:2])
          復制代碼
          1. 獲取列
            print(a['url'])
          復制代碼
          1. 插入行
            with open('demo_book.xls', 'rb+') as f:
          
              a = tablib.import_set(f.read(), 'xls')
              print(a)
              # 添加行
              a.append(['zhiwang', 'put', '成功'])
            
              # 在指定行插入
              a.insert(2,['zhiwang', 'put', '成功'])
          
          
          with open('demo_book.xls', 'wb') as f:
              f.write(a.xls)
          print(a)
          復制代碼
          1. 插入列
            # 在最后添加
          a.append_col(['成功','失敗', '失敗'], header='actual_result')
          
          # 在指定位置添加列
          a.insert_col(3,['成功','失敗', '失敗'], header='actual_result')
          復制代碼
          1. 修改
            # 修改某一行數據
          a[0] = ('baidu', 'put', 'shibai', 'shibai')
          
          # 修改某個具體的數據
          a._data[0][0] = 'wobuzhidao'
          復制代碼

          注意:不要在代碼里直接操作 a._data, 可以封裝成方法。

          冒煙用例執行

          在測試過程中,我們經常需要執行冒煙用例。或者給測試用例打標簽,比如登錄功能,成功用例,異常用例等等。tablib 通過 tags 關鍵字方便刪選指定的測試用例來執行。

          1. 添加 tags
            # 添加標簽
          a.append(['buzhi', 'put', 'c','c'], tags=['成功'])
          # 獲取所有‘成功’的測試用例
          success = a.filter(tag='成功')
          復制代碼
          1. 修改 tags
            # 將測試用例的標簽修改成‘失敗’
          a._data[0].tags = ['失敗']
          # 獲取所有‘失敗’ 的測試用例
          failed = a.filter(tag='失敗')
          print(failed)
          復制代碼
          1. 去除重復元素
            a.remove_duplicates()
          復制代碼

          靈活的格式切換

          測試數據最常用的功能是需要切換格式,比如把 Excel 格式的數據切換成 YAML , 這個在接口自動化測試框架 httprunner 中經常用到。還是用 a 來表示 DataSet 數據:

          1. 存儲為 YAML 文件:
            with open('demo.yml', 'w', encoding='utf-8') as f:
              f.write(a.yaml)
          復制代碼
          1. 導入 YAML 文件:
            with open('demo.yml', 'r') as f:
              a = tablib.Dataset().load(f.read(), format='yaml')
              print(a.html)
          復制代碼

          效果:

          651 x 193

          1. 導出為 HTML :
            with open('demo.html', 'w', encoding='utf-8') as f:
              f.write(data.html)
          復制代碼

          效果:

          728 x 188 879 x 227

          1. 導出為 json:
            with open('demo.json', 'w', encoding='utf-8') as f:
              f.write(data.json)
          復制代碼

          效果:

            [
              {
                  "url": "baidu",
                  "method": "get",
                  "expect": "failed"
              },
              {
                  "url": "lemon",
                  "method": "post",
                  "expect": "success"
              }
          ]
          復制代碼

          其他常用方法

          • lpop(),lpush(row, tags=[]),lpush_col(col, header=None) 是對列的相關操作
          • pop(),rpop(),rpush(row, tags=[]),rpush_col(col, header=None) 是對行的相關操作
          • remove_duplicates() 去除重復的記錄
          • sort(col, reverse=False) 根據列進行排序
          • subset(rows=None, cols=None) 返回子 Dataset
          • wipe() 清空 Dataset,包括表頭和內容

          總結

          tablib 這個庫非常靈活,用法非常好記,完全符合我們對 Excel 的理解。非常適用于 python 自動化測試的用例數據管理。只有一個缺點:中文資料太少。后面我會翻譯一些優秀的英文文檔,讓更多人把這個優秀的庫用起來。

          最后:【可能給你帶來幫助的教程】(私聊q1領取)


          這一些資料,對做【軟件測試】的朋友而言應該是較為完整了,這類學習資料也陪伴我走過了最艱難的路程,希望也可以幫助到你!萬事要盡早,尤其是技術行業,一定要提升技術功底。


          主站蜘蛛池模板: 亚洲国产成人久久综合一区77| 亲子乱AV视频一区二区| 国产微拍精品一区二区| 国产婷婷色一区二区三区| 无码人妻aⅴ一区二区三区| 亚洲一区二区三区写真 | 91精品国产一区二区三区左线| 一区 二区 三区 中文字幕| 无码精品久久一区二区三区| 国产裸体舞一区二区三区| 国产精品综合一区二区三区| 精品国产一区二区麻豆| 三级韩国一区久久二区综合| 日韩十八禁一区二区久久| 一区二区三区www| 国产波霸爆乳一区二区| 天堂Av无码Av一区二区三区| 国产婷婷色一区二区三区深爱网| 精品国产一区二区麻豆| 精品女同一区二区| 一区二区三区视频观看| 日韩电影一区二区三区| 精品亚洲AV无码一区二区| 国产亚洲综合一区柠檬导航| 欲色影视天天一区二区三区色香欲| 亚洲高清偷拍一区二区三区| 一区二区三区福利视频免费观看| 国产成人午夜精品一区二区三区| 一区二区三区波多野结衣 | 国产嫖妓一区二区三区无码| 精品少妇一区二区三区视频| 日韩精品一区二区三区不卡| 爆乳无码AV一区二区三区 | 精品无码国产一区二区三区AV| 中文字幕无码免费久久9一区9| av无码精品一区二区三区四区| 精品国产免费观看一区| 日韩一区二区三区免费播放| 日亚毛片免费乱码不卡一区| а天堂中文最新一区二区三区| 国产一区二区三区在线看片|