实时抓取网页数据(#如何用excel获得股票实时数据#首先找一个提供*敏*感*词*)

优采云 发布时间: 2021-12-03 14:34

  实时抓取网页数据(#如何用excel获得股票实时数据#首先找一个提供*敏*感*词*)

  #如何使用excel获取实时*敏*感*词*#

  首先,找到一个提供*敏*感*词*的网站。各种金融网站都有*敏*感*词*。我们以东方财富网为例:

  

  对于沪深A股数据,我们在谷歌浏览器中查看真实网址:

  

  找到与*敏*感*词*对应的jQuery行,然后查看头文件中的URL:

  

  将此 URL 复制到 Excel,数据 ==> 来自 网站:

  

  单击以确认,Power Query 编辑器将打开。如果一切顺利,数据会直接出现:

  

  虽然不是表,但证明爬取成功。下一步是如何解析二进制文件。从谷歌浏览器看,这是一个jsoncallback数据包,比json数据多了一个函数名。我们只需要提取两个括号。中间的数据可以用json解析。注意total:4440,我们后面会用到这个值。

  

  =Json.Document(Text.BetweenDelimiters(Text.FromBinary(Web.Contents(url)),"(",")"))

  

  然后展开数据表:

  

  到目前为止一切都很顺利,但我们抓取的只是一页数据,让我们看看:

  

  pn是页码,我们抓取第3页,pz是每页20条数据,我们有两种方法抓取所有数据,一种是使用这个pz:20,然后定义函数,抓取所有页码,我在之前的爬行中反复使用过这个。今天我们尝试直接修改pz,一次性抓取所有数据。其实,你可以尝试改变查询参数。如果我们把pn改成4,抓取到的页面就是第4页。同理,我们把pn改成200,看看能不能直接抓取200条数据。

  

  那我们试试直接输入5000,能不能全部抢过来:

  

  这似乎是可能的。

  还有一个问题,就是数据的所有标题行都以f开头,不可读。如何将它们变成网页中的汉字标题行。

  这个问题有点复杂。我们可能需要检查代码,看看是否可以找到替换它的方法。先看html:

  但这并不完整,还有几列需要自定义:

  

  这些指标没有对应的 f ​​代码。

  我们来看一下js文件:

  

  这个文件中有对应的数据,我们直接拷贝到Power Query中,处理成列表形式进行备份:

  

  下一步是匹配表中的键并修改列名:

  

  首先我们需要匹配出这样一个列表。

  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 中。

  

  如果你想要最新的数据,只需刷新它。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线