首页 > 其他分享 >Power BI实用技巧——批量爬取网页数据

Power BI实用技巧——批量爬取网页数据

时间:2024-07-05 23:41:34浏览次数:17  
标签:实用技巧 Power 批量 BI 爬取 网址 点击 数据

Power BI实用技巧——批量爬取网页数据

  

   假设我是个电商公司老板,我的公司最近要上架一款新产品,我需要你来帮我做一个竞品分析,同类型产品的评分、价格、销量、市场占有率最高的品牌详情,来帮助我进行前期宣发,这个时候最让你一筹莫展的环节是什么?我猜是数据从哪来?竞争对手当然是不会整理一张表发你的喽

 

既然是电商,那么所有数据来源就只能从电商平台获取,那么问题也就接踵而至了,网页爬取数据不规范,数据清洗困难重重,相同产品网页少则十几页,多则几十页,难道要一页一页的爬吗?这时候我又来让你搞快点,不然别下班,不要耽误我赚钱!怎么办?难道真的要为了区区五斗米熬夜?当然不用喽!跟我一起做,五分钟爬取海量数据,解决让你头秃的难题!

 

案例:当当网累计好评榜批量爬取

1、单量采集:http://bang.dangdang.com/books/fivestars/01.00.00.00.00.00-all-0-0-1-1

上方展示网址为当当网累计好评榜网址,复制这个网址,打开Power BI,第一步:点击获取数据,选择Web(从网页导入数据),第二步:粘贴网址,点击确定,

★第一步:获取数据

 

 

★第二步:链接网址

 

 

点击导航器显示选项左下角“使用示例添加表”,展开如下界面

 

 

★第三步:规范采集

这里假设我们要提取宝贝名称、作者、出版社、出版日期,五星评论、总评论数量等,将我们要提取的项目名称输入到列名中,在列中输入我们要提取的内容,比如我们要提取宝贝名称,在列中输入“高尔基成长三部曲(童年、在人间、我的大学)”,回车系统便可自动向下填充我们要提取的内容,下图为我已经提取好的表截图,

 

 

点击确定,选择表4,点击转换数据进入Power Query界面对加载上来的表格进行清洗,比如替换数据列中的文字,将数据转换为可以运算的数据格式等,最终得到一张规范的数据表格,如图所示,

 

 

进行到这一步,单量采集就算大功告成了,有些小伙伴很疑惑,数据清洗为啥不等批量采集完成在一起做呢?这样等批量采集完成后,岂不是又要清洗一遍?请带着这个疑问继续阅读哦!

 

 

2、批量采集:

★第一步:解析网址

 

 

上面的网址是当当网累计好评榜第一页和第二页的网址,我们通过观察发现红框位置内容是一样的,唯一发生变化的是网址后缀的1、2,我们需要爬取的数据总共有25页,按照这个规律,后缀变量应该是1到25,请记住这个规律,很关键!

★第二步:创建函数

选中我们加载上来的表4,点击右键,选择创建函数,跳出提示框

 

 

 

点击创建,跳出提示框,输入函数名称为“调用函数”,点击确定,出现如下界面

 

 

接下来我们就要对上图中的M函数进行修改,主要修改第一行和第二行,其他代码保持不变,将函数修改为:

➽示例

 =(x as text) => let

        源 = Web.BrowserContents("http://bang.dangdang.com/books/fivestars/01.00.00.00.00.00-all-0-0-1-"&x),

 

√代码解析:标红位置为修改位置,

(x as text)这里的含义是将x作为文本变量,http://bang.dangdang.com/books/fivestars/01.00.00.00.00.00-all-0-0-1-"&x这里的含义是将网址与文本变量连接,形成一个完整的网址;

 

点击调用,我们的调用函数就创建完成了。

★第三步:创建变量序列表

1、接下来我们回到主页选项卡,点击新建源,选择空查询,建立一个空白查询页,如图

 

 

2、在代码输入框中输入一个M函数:

★示例

= List.Numbers(1,25,1)

 

√代码解析:

 List.Number用于生成一个数字序列的列表

(1,25,1)起始数据是1,创建25组,间隔数据是1

代码生成一个从1开始到25结束的单列表

为什么创建这样一张表呢?因为网址后缀变量应该是1到25,也就是我们解析网址后,总结出来的规律,点击将此列转换为表,将列格式转换为文本(这一步很重要哦)。

★第三步:批量爬取数据

 

1、接下来就是批量采集最关键的一步了,找到添加列选项卡,选择调用自定义函数,将我们之间创建的“调用函数”添加到功能查询中,

 

 

2、点击确定,出现“要求与数据隐私有关信息”提示语。点击继续,勾选忽略此文件的隐私级别检查,点击保存,如下图所示操作,

 

 

经过漫长的等待(大概2分钟哦),系统就将网页数据全部提取上来,并返回这样一张表

 

 

 

我们只需要展开调用函数,就可以将25页网页数据批量抓取到Power Query界面,而且你会惊喜的发现,抓取到的数据不仅按照单量采集的表格规范呈现,而且已经被清洗好了,简直事半功倍啊,这是因为我们在单量采集时就完成了数据清洗,在我们创建调用函数时,保留了全部数据清洗动作代码,所以在我们批量采集网页数据时,同时也在批量的清洗数据,这也就是为什么我们要在单量采集时就完成数据清洗动作!

小贴士:如何让我们学到的知识爆金币呢?

将我们爬取到的数据关闭并应用后,就可以通过DAX studio批量导出为EXCEL表格,将数据上传到科赛网数据集专栏中,当有人下载你上传的数据时,就是知识爆金币时!不知道DAX studio批量导出数据的小伙伴,可以参考我的上一篇推文哦!

科赛网网址:https://www.heywhale.com/home,

 

 

目前已组建有BI在线服务团队,活跃接单老师超百人,专注解决BI横向、纵向相关的各类技术问题,包括但不限于各类BI工具、python、数据仓库、编程开发等服务。

 

 

 

BI包括但不限于永洪bi、quickbi、PowerBI、FineBI、Finereport、smartbi、tableau、qliksense等BI工具 ,可以制作BI系统,或解决单个项目,单个问题,考试相关、一对一教学等服务有意联系瓶子微信:wdfyqx

 

标签:实用技巧,Power,批量,BI,爬取,网址,点击,数据
From: https://www.cnblogs.com/pingzizhuanshu/p/18286771

相关文章

  • 机器学习(bilibili学习)
    一、数据集的使用小的数据集一般使用load加载,大的数据集一般使用fenth二、数据集的分割fromsklearn.model_selectionimporttrain_test_split#数据集的分割,x为训练集,y为测试集x_train,x_test,y_train,y_test=train_test_split(iris.data,iris.target,test_size=0.......
  • BMP(Bitmap Image File)解码流程:
    BMP(BitmapImageFile)的解码流程主要包括以下几个步骤,这些步骤确保了BMP图像文件能够被正确地读取并显示在屏幕上:1.读取文件头信息目的:确认文件类型和基本信息。内容:BMP文件以特定的文件头标识开始,这包括文件的类型(必须是“BM”,以十六进制表示为0x4D42)、文件大小、保留字(......
  • Miller-Rabin 和 Pollard-Rho 小记
    Miller-Rabin可以帮助我们快速判断一个大数是不是质数,现在已经有了确定性算法。在\(2^{64}\)范围内,我们可以快速地进行确定性判素。二次校验定理:若\(p\)为奇质数,则\(a^x\equiv1\pmodp\)的解为\(x=±1\)。我们有这样的流程:令\(d=p-1\),然后不断检验\(a^d\)......
  • 氛围共处(Ambient Co-presence)丨RTE 共读计划
       在同一个网络空间和情境下,营造一种微妙的、隐约感知的、实时同步的感觉。加入「RTE共读计划」:重要的技术,往往是那些不易察觉却无所不在的技术。欢迎阅读「RTE共读计划」的文章,我们希望通过本计划: •挖掘到那些帮助人们跨越距离实时互动(Real-TimeEngagement,RTE)并......
  • 解决nacos报错 Caused by: io.grpc.netty.shaded.io.netty.channel.unix.Errors$Nati
    报错信息:org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918)atorg.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583)atorg......
  • BigInter类和Decimallei类
    应用场景BigInteger适用保存比较大的整型BigDecimal适用精度更高的浮点型(小数)BigInteger当编程中需要处理很大的整数,long不够用时可以使用BigInteger的类解决。需要对BigInteger进行加减乘除的时候,需要使用对应的方法。先创建一个需要操作的BigInteger然后进行操作public......
  • FAILED: cpu_adam.so /usr/bin/ld: cannot find -lcurand collect2: error: ld retur
    FAILED:cpu_adam.so c++cpu_adam.ocpu_adam_impl.o-shared-lcurand-L/home/deeplp/anaconda3/envs/minicpm/lib/python3.10/site-packages/torch/lib-lc10-ltorch_cpu-ltorch-ltorch_python-ocpu_adam.so/usr/bin/ld:cannotfind-lcurandcollect2:error:ld......
  • 服务器bios 烧坏
    服务器作为网络运行的基础设备,在平常的使用过程中或多或少出现一些故障现象。具体有哪些常见的故障,怎么排除这些故障呢?一、硬件故障:硬件故障有很多种,对系统产生的影响也不一样,这里按其故障对系统的影响程度分:致命影响的硬件故障和只影响功能的硬件故障两类进行硬件分类:其损坏对......
  • 在Docker中搭建rabbit MQ集群 (Mac + OrbStack)
    我以为用docker搭建一个rabbitMq集群会非常简单,但是结果却出乎意料,我花了差不多两个半天才搞定。这还是依赖了AI的协助,否则难度不敢想象。我的环境是Mac上的OrbStack。用了Kimi+文心一言+ChatGPT+Claude,还是Kimi价值最大。backandforth的过程就不讲了,这里直接说一下......
  • 解决BitBucket仓库较大拉取失败,使用SSH拉取
    HTTPS拉取如果使用的是https拉取,可使用以下命令尝试,如果还是失败,可使用ssh拉取gitclone--depth=1xxxx.git--depth=1:拉取最近1次提交记录,这样拉取的文件较小;1是可以更改的如果想拉取指定分支的可以使用,master换成你的分支名即可gitclone-bmaster--depth=1xxx.g......