excel抓取多页网页数据(#如何用excel获得股票实时数据#首先找一个提供*敏*感*词*)
优采云 发布时间: 2022-01-27 22:12excel抓取多页网页数据(#如何用excel获得股票实时数据#首先找一个提供*敏*感*词*)
#如何使用excel获取实时*敏*感*词*#
首先,找到一个提供*敏*感*词*的 网站。各种财经网站都有*敏*感*词*。我们以东方财富网为例:
对于沪深A股数据,我们在谷歌浏览器中查看真实网址:
找到对应*敏*感*词*的jQuery行,然后查看头文件中的URL:
将此 URL 复制到 Excel,数据 ==> 来自 网站:
点击确定打开Power Query编辑器,如果一切顺利,数据会直接出现:
虽然不是表格,但证明刮是成功的。下一步是如何解析这个二进制文件。从google浏览器看,是一个jsoncallback数据包,比json数据多了一个函数名。我们只需要提取两个括号。中间数据可以用json解析。注意总数:4440,我们稍后会使用这个值。
=Json.Document(Text.BetweenDelimiters(Text.FromBinary(Web.Contents(url)),"(",")"))
然后展开数据表:
到目前为止一切顺利,但我们只抓取一页数据,让我们看看:
pn是页码,我们是抓取第三页,pz是每页20条数据,我们有两种方式来抓取所有数据,一种是使用这个pz:20,然后定义一个函数来抓取所有的页码,我在以前的爬网中反复使用过这个。今天我们将尝试直接修改 pz 以一次捕获所有数据。其实我们可以尝试改变查询参数。如果我们将 pn 更改为 4,我们将抓取第 4 页。同理,我们把pn修改为200,看看能不能直接抓取200条数据。
那我们试试直接输入5000,能不能全部抓起来:
看起来不错。
还有一个问题,就是数据的标题行都是f开头的,不可读,怎么变成网页中汉字的标题行。
这个问题有点复杂。我们可能不得不检查代码,看看是否能找到替换它的方法。首先,看一下html:
但这是不完整的,有几列需要自定义:
这些指标没有对应的 f 代码。
我们再来看看js文件:
这个文件里面有对应的数据,我们直接复制到Power Query中,处理成列表形式备用:
下一步就是匹配表中的key,修改列名:
首先我们需要匹配出这样一个列表。
List.RemoveNulls(List.Zip(List.Transform(Table.ColumnNames(data),(x)=>List.RemoveNulls(List.Transform({1..List.Count(n[key])}, (y)=>if x=n[key]{y-1} then {x,n[title]{y-1}} else null)))){0})
然后我们可以直接使用 Table.RenameColumns 函数批量修改列名:
Table.RenameColumns(data,List.RemoveNulls(List.Zip(List.Transform(Table.ColumnNames(data),(x)=>List.RemoveNulls(List.Transform({1..List.Count(n [key])},(y)=>if x=n[key]{y-1} then {x,n[title]{y-1}} else null)))){0}))
我们可以将数据加载到 Excel 中。
如果要最新数据,直接刷新即可。