如何删除第一张单页_如何用PowerBI导入网页数据
作者: 東軍
相信很多朋友被PBI顏值吸引而入了坑,迫切想上手,但往往會(huì)卡在數(shù)據(jù)源環(huán)節(jié)。本公司數(shù)據(jù)自己沒權(quán)限,外公司數(shù)據(jù)可望不可及,而網(wǎng)絡(luò)社區(qū)里提供的練習(xí)數(shù)據(jù),往往專業(yè)性太強(qiáng),業(yè)務(wù)邏輯摸不透,分析更是無從下手。
那有什么辦法能方便快捷地找到貼近我們生活的數(shù)據(jù)嗎?
今天咱們就以隨處可見的榜單類數(shù)據(jù)為例,如何通過PBI來導(dǎo)入網(wǎng)頁數(shù)據(jù),快速建立屬于自己的數(shù)據(jù)源。
一、導(dǎo)入單頁數(shù)據(jù)(無參數(shù))
單張網(wǎng)頁的數(shù)據(jù)導(dǎo)入,其實(shí)馬世權(quán)老師《從Excel到Power BI商業(yè)智能數(shù)據(jù)分析》一書已有過展示(第97頁的3.3章節(jié))。這里咱們換個(gè)網(wǎng)頁,重新走一遍流程,溫故而知新。
這里以當(dāng)當(dāng)網(wǎng)圖書暢銷榜為例(一共25頁,每頁20本書。本節(jié)僅針對(duì)第一頁)。2019年8月暢銷榜網(wǎng)址:http://bang.dangdang.com/books/bestsellers/01.00.00.00.00.00-month-2019-8-1-1
1. 獲取Web數(shù)據(jù)
2. 復(fù)制粘貼網(wǎng)址,確定
3.選中-轉(zhuǎn)換
導(dǎo)航器里出現(xiàn)兩張表,很容易就可以判定第一張表就是我們想要的。選中-轉(zhuǎn)換
4. 數(shù)據(jù)導(dǎo)入成功
根據(jù)分析需要,可以在PBI編輯器里作下一步清洗處理(可參見馬世權(quán)老師《從Excel到Power BI商業(yè)智能數(shù)據(jù)分析》第70頁“數(shù)據(jù)搬運(yùn)工”章節(jié))
由于網(wǎng)頁數(shù)據(jù)復(fù)雜多變,上述步驟三里還會(huì)出現(xiàn)大量重復(fù)、殘缺的表格信息。甚至有時(shí)候相同網(wǎng)址,分別用PBI和EXCEL來導(dǎo)入,網(wǎng)頁分析結(jié)果還有差異。這時(shí)就需要耐心仔細(xì),挑選出相對(duì)完整的表格數(shù)據(jù)導(dǎo)入即可。
二、導(dǎo)入多頁數(shù)據(jù)(僅頁碼參數(shù))
剛才我們成功導(dǎo)入了單頁數(shù)據(jù),也熟悉了一遍流程。顯然單頁數(shù)據(jù)量還達(dá)不到數(shù)據(jù)分析的起步要求,那如何把上述榜單的二十五頁明細(xì)全部導(dǎo)入呢?
我們?cè)诰W(wǎng)頁的頁碼鏈接處前后點(diǎn)幾次,觀察網(wǎng)址變化就會(huì)發(fā)現(xiàn),關(guān)鍵在于網(wǎng)址最后一個(gè)數(shù)字。http://bang.dangdang.com/books/bestsellers/01.00.00.00.00.00-month-2019-8-1-1
在網(wǎng)頁數(shù)據(jù)導(dǎo)入的所有步驟中,有兩個(gè)環(huán)節(jié)最為重要:
a) 如何判定鏈接與網(wǎng)址的對(duì)應(yīng)關(guān)系。
b) 如何判定網(wǎng)址中哪些是關(guān)鍵字符串。
這兩個(gè)環(huán)節(jié),常規(guī)網(wǎng)站一般沒什么難度,仔細(xì)對(duì)比就能找到規(guī)律。而有些網(wǎng)頁就不那么好對(duì)付了(尤其像一些財(cái)經(jīng)類網(wǎng)站,基金/股票的排行榜,可以自己去摸索一下),需要用額外工具來解析,這個(gè)不是咱們今天討論的重點(diǎn),暫且忽略。
既然找到了關(guān)鍵環(huán)節(jié),那問題就簡單了。前四個(gè)步驟(獲取、復(fù)制粘貼網(wǎng)址、選中、導(dǎo)入)與導(dǎo)入單頁數(shù)據(jù)相同,不再贅述。我們把已導(dǎo)入的數(shù)據(jù)表重命名(盡量避免出現(xiàn)諸如表1、查詢2、函數(shù)3,參數(shù)4之類的名稱)。
多頁數(shù)據(jù)導(dǎo)入的思路:
- 先設(shè)定參數(shù)。
本例固定變化的是頁碼,因此只1需設(shè)置一個(gè)頁碼參數(shù)即可; - 再來一個(gè)自定義函數(shù);
- 把參數(shù)代入函數(shù);
- 展開函數(shù),得到最終結(jié)果。
1234步驟參照單網(wǎng)頁導(dǎo)入,我們從步驟5開始
5. 創(chuàng)建頁碼參數(shù)
6.插入頁碼參數(shù)
雙擊第一步驟“源”后面的小齒輪,打開數(shù)據(jù)獲取界面,切換到“高級(jí)”選項(xiàng)。把URL文本的最后一個(gè)字符去掉,用剛創(chuàng)建的頁碼參數(shù)代替。
7. 創(chuàng)建自定義函數(shù)
在初始表上單擊右鍵,選擇“創(chuàng)建函數(shù)”菜單。函數(shù)名稱隨意。
8. 創(chuàng)建頁碼列表
(目的在于告訴PBI,列表里每項(xiàng)數(shù)值都代入頁碼參數(shù),后續(xù)調(diào)用函數(shù)時(shí)就能以此生成25個(gè)網(wǎng)址字符串,PBI就會(huì)根據(jù)這些字符串,去自動(dòng)鏈接相關(guān)網(wǎng)址)
1) 新建“空查詢”。
2) 在公式欄里輸入“= List.Numbers(1,25,1)”,PBI將生成一個(gè)等差數(shù)列。其中第一個(gè)“1”為起始數(shù)字,第二個(gè)“25”為尾數(shù),第三個(gè)“1”是差額。
3) 在新列表的標(biāo)題欄里右鍵“到表”,將列表轉(zhuǎn)換為表(公式欄里的“Table.FromList”是自動(dòng)生成的)。
4) 將查詢名和列表標(biāo)題欄重命名,方便后續(xù)操作辨識(shí)。
5) 將該列數(shù)據(jù)類型轉(zhuǎn)換為“文本”(對(duì)應(yīng)上述步驟5的參數(shù)類型),數(shù)字便自動(dòng)靠左對(duì)齊。
9. 調(diào)用自定義函數(shù)
1) 仍然選中“頁碼列表”,點(diǎn)擊“添加列-調(diào)用自定義函數(shù)”,按下圖所示設(shè)定。
2) 忽略“隱私級(jí)別”。
3) 經(jīng)過數(shù)據(jù)加載,結(jié)果終于顯現(xiàn)。25個(gè)頁碼,每行對(duì)應(yīng)了一個(gè)Table,每個(gè)Table里都有相應(yīng)的二十條數(shù)據(jù)。隨意點(diǎn)擊一個(gè)Table就能看到。
10. 展開函數(shù)
點(diǎn)擊新列右上角符號(hào),即可展開所有25行共計(jì)500條數(shù)據(jù)。如果大家覺得“Column”太多容易混淆,那就直接在步驟4把數(shù)據(jù)先清理好,保留或刪除哪幾列,重命名并指定數(shù)據(jù)類型等。
雖然只有10個(gè)步驟,但對(duì)初學(xué)者來說,可能操作一趟下來還是一頭霧水。
咱們最后再來總結(jié)一下。對(duì)于多頁數(shù)據(jù)的導(dǎo)入,可以看作中學(xué)生列方程式。
1) 先設(shè)未知數(shù)x(第五步創(chuàng)建參數(shù))
2) 再列方程y=…x…(第七步創(chuàng)建自定義函數(shù))
3) 把x可能出現(xiàn)的值全部寫出來(第八步創(chuàng)建頁碼列表)
4) 把每個(gè)x的值代入方程,算出y值(第九步調(diào)用自定義函數(shù))
真正的掌握離不開大量練習(xí),只有實(shí)操才能進(jìn)步。除了當(dāng)當(dāng)網(wǎng),再給大家?guī)讉€(gè)網(wǎng)址來練習(xí):
豆瓣電影榜單:https://movie.douban.com/top250
豆瓣音樂榜單:https://music.douban.com/top250
豆瓣讀書榜單:https://book.douban.com/top250
全球影史票房榜:https://www.boxofficemojo.com/alltime/world/
國內(nèi)居民消費(fèi)價(jià)格指數(shù)(CPI):http://data.eastmoney.com/cjsj/cpi.html
三、導(dǎo)入更多數(shù)據(jù)(包含兩個(gè)以上參數(shù))
兩個(gè)或兩個(gè)以上參數(shù)的情況,原理也一樣。本節(jié)將提供兩套方案,建議初學(xué)朋友把兩種方法多操練幾次。熟悉的目的不是死搬硬套,而是今后遇到陌生情況,能多一條思路。很多從未碰到過的棘手問題,能開辟新思路的畢竟是少數(shù)大咖,咱們普通人一般都是把舊思路老經(jīng)驗(yàn)多結(jié)合幾次,基本也能解決。
這回我們拿起點(diǎn)中文網(wǎng)的“原創(chuàng)風(fēng)云榜”來做演示。
https://www.qidian.com/rank/yuepiao?style=2&page=1
仔細(xì)觀察這個(gè)頁面,單就“原創(chuàng)風(fēng)云榜”就有四個(gè)參數(shù):年、月、分類、頁碼。
本節(jié)我們只考慮“分類”和“頁碼”兩者組合,年月參數(shù)留給各位自己演練實(shí)操。只要熟悉了兩個(gè)參數(shù)的導(dǎo)入流程,參數(shù)再加幾個(gè)也沒多大難度。
分類共有十四個(gè),每個(gè)分類有兩頁。為了便于對(duì)比,我把十四個(gè)分類的URL都復(fù)制到一起:
這樣一看就很清楚了,URL中關(guān)于頁碼的信息是“page=”,分類的信息是“chn=”。既然參數(shù)確定了,那二話不說,動(dòng)手干起來。
實(shí)操啦,跟進(jìn)腳步,同志們!
方案一
1. 獲取Web數(shù)據(jù)
2. 復(fù)制粘貼網(wǎng)址,確定
3. 選取表格,點(diǎn)擊“轉(zhuǎn)換數(shù)據(jù)”
4. 數(shù)據(jù)導(dǎo)入成功后處理
稍微做一些整理:刪除最后一列“操作”,把第二列“類別”中的豎括號(hào)“「」”替換掉,“表1”重命名為“初始表”。
5. 創(chuàng)建頁碼參數(shù)和分類參數(shù)
(參數(shù)“類型”必須設(shè)為“文本”)
6. 插入U(xiǎn)RL字符串
回到初始表,將兩個(gè)參數(shù)插入U(xiǎn)RL字符串(雙擊第一步驟“源”后面的小齒輪,打開數(shù)據(jù)獲取界面,切換到“高級(jí)”選項(xiàng)。把URL文本中分類和頁碼數(shù)值,用剛創(chuàng)建的兩個(gè)參數(shù)代替)
7.創(chuàng)建自定義函數(shù)
在初始表上單擊右鍵,選擇“創(chuàng)建函數(shù)”菜單。函數(shù)名稱隨意。
8. 創(chuàng)建頁碼列表和分類列表
(與第二章節(jié)相同,不再重復(fù)截圖)新建“空查詢”,頁碼列表公式“= List.Numbers(1,2,1)”,分類列表公式“= List.Numbers(1,22,1)”。本步驟有三個(gè)動(dòng)作千萬別忘:查詢轉(zhuǎn)換到表;數(shù)據(jù)類型轉(zhuǎn)換成文本;標(biāo)題欄重命名“PageList”和“Catalog”。
這兒有個(gè)問題。十四個(gè)分類數(shù)值明明不連續(xù),為什么我在這兒要用公式來生成連續(xù)數(shù)值。
其實(shí)我就是想偷懶。對(duì)于參數(shù)的不連續(xù)數(shù)值,可以用“輸入數(shù)據(jù)”來一個(gè)個(gè)手動(dòng)輸入。我嫌麻煩,不如自動(dòng)生成連續(xù)數(shù)值,在后續(xù)選取步驟中,把無用數(shù)值前復(fù)選框的勾去掉即可。
9. 調(diào)用自定義函數(shù)
(本步驟是重點(diǎn),多參數(shù)與單參數(shù)的最大不同之處,就在這一步)
如果按第二章調(diào)用函數(shù)的方法,就會(huì)發(fā)現(xiàn)問題所在。由于存在2個(gè)參數(shù),因此調(diào)用自定義函數(shù)過程中,必須要同時(shí)安置兩個(gè)參數(shù)。但無論在“頁碼列表”還是“分類列表”上調(diào)用,對(duì)話框里都只出現(xiàn)一個(gè)參數(shù)選項(xiàng),這該如何是好?
回顧前面提到的單參數(shù)思路,我們把參數(shù)當(dāng)作x,自定義函數(shù)看作y,把x的每一個(gè)實(shí)例數(shù)值代入函數(shù),y就能得到一個(gè)URL字符串。本章的雙參數(shù)要實(shí)現(xiàn)同樣效果,是不是就等同于實(shí)現(xiàn)雙參數(shù)的笛卡爾積呢?
思路有了,那就動(dòng)手。在“分類列表”上添加自定義列,列公式為“=頁碼列表”。展開自定義列,得到了我們想要的結(jié)果。這時(shí)就可以把無用的分類去掉。
10. 展開函數(shù)
此時(shí)再在“分類列表”上調(diào)用自定義函數(shù),便水到渠成。
至此,雙參數(shù)網(wǎng)頁數(shù)據(jù)的導(dǎo)入操作就完成了。有興趣的朋友可以自己加入年和月參數(shù)繼續(xù)折騰。
方案二
第二種方案,不用事先導(dǎo)入數(shù)據(jù),不用預(yù)先設(shè)置參數(shù),也不用自定義函數(shù)。僅需幾步DAX便能實(shí)現(xiàn),簡單粗暴。
1. 創(chuàng)建分類列表
此處截圖從簡,詳情可以參考前面章節(jié)。
1) 新建“空查詢”
2) 輸入公式“= List.Numbers(1,22,1)”
3) 轉(zhuǎn)換查詢到表
4) 數(shù)據(jù)類型設(shè)為“文本”
5) 標(biāo)題欄重命名為“分類”
2. 自定義列“起始頁碼”
前面我們說過,分類和頁碼列表的目的是為了實(shí)現(xiàn)分類和列表數(shù)值的笛卡爾積。為了實(shí)現(xiàn)這個(gè)效果,就需要先添加兩個(gè)臨時(shí)列。自定義列“起始頁碼”,將該列數(shù)據(jù)類型設(shè)為“整數(shù)”。
3. 自定義列“結(jié)尾頁碼”
為什么要添加兩個(gè)臨時(shí)列?因?yàn)槲覀兿胪ㄟ^M語言的Number.From公式,來實(shí)現(xiàn)起始頁到結(jié)尾頁的自動(dòng)填充。同理,在日期場(chǎng)景中,也可以用該公式來填充起始到結(jié)束日期之間的每一天。
4. 自定義列“頁碼”
這里公式“={Number.From([起始頁碼])..Number.From([結(jié)尾頁碼])}”不是DAX,而是M語言,注意大小寫敏感。公式里的列名稱,只需在右側(cè)“可用列”里雙擊即可,不需手動(dòng)輸入。
5. 展開“頁碼”列,點(diǎn)擊“擴(kuò)展到新行”
6. 完成笛卡爾積
將“頁碼”列數(shù)據(jù)類型改為“整數(shù)”;將“分類”列無關(guān)數(shù)值去掉勾選;刪除“起始頁碼”和“結(jié)尾頁碼”兩個(gè)臨時(shí)列。笛卡爾積就完成了。
7. 自定義列“URL”
這里我們也用了M語言,注意大小寫敏感。公式:
Web.Page(Web.Contents("https://www.qidian.com/rank/yuepiao?style=2&chn="&[分類]&"&page="&[頁碼]))
8. 展開URL列,僅保留Data勾選。確定后發(fā)現(xiàn)還有Table在里面,那就繼續(xù)展開。第二次展開便得到了最終結(jié)果,稍做清理,便大功告成。
是不是眼前一亮?明明八個(gè)常規(guī)步驟就能解決的問題,非要在前面章節(jié)嘮叨那么多,小編腦子撞墻了嗎?
好吧,你們?nèi)硕嘧於嗳^硬,小編嘴軟手軟嘰嘰軟,拼不過你們。不過我還是要辯解一番,或許在PBI導(dǎo)入網(wǎng)頁數(shù)據(jù)這塊,確實(shí)光憑幾句DAX和M公式就能快速實(shí)現(xiàn)要求,但咱們的目的是什么?前面也講過,是為了多條思路嘛,預(yù)設(shè)參數(shù)函數(shù)這種操作,摸透性格捋順脾氣,或許其他場(chǎng)景就能派上大用處。
作者介紹:
總結(jié)
以上是生活随笔為你收集整理的如何删除第一张单页_如何用PowerBI导入网页数据的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python online course
- 下一篇: layui分页limit不显示_layu