如何用Power Query抓取POST请求类网页数据?
这篇文章我不建议你收藏,因为你不会打开收藏夹。我建议你现在花上5分钟读完这篇文章,用这5分钟,真正掌握一个知识点。
最近才发现,原来抓取BDI和BHSI指数的网站2021年以后没有更新了:
没办法,只好另外再搜索找个数据来源,当然,这个指数随便搜索一下,都一大堆:
既然那个排在第一位,咱们就取它的吧。
通过chrome浏览器进入网站后,右键菜单【检查】看一下参数(视频无声音,公共场合也可以放心播放):
哎,这么个简单的查询都用POST方法做请求……
不过,无所谓,简单的POST请求类网站数据的抓取也不复杂,虽然不像GET类网站那样可以一个网址直接粗暴搞定。
关于GET/POST方法的差异,简单来说,就是GET类主要用于传递一些简单的参数即可以实现数据的查询,所以会直接将这些参数加在网址后面,而POST类主要用于查询条件比较复杂的情况,所以会将这些参数做成一个表单传输,当然,POST类方法既然能用于复杂的情况,当然可以用于简单的情况,比如上面这个例子。(关于GET/POST更详细的信息,有兴趣的朋友可以搜索了解一下,但非IT专业人员一般也不太需要了解太深,知道有这么回事儿,在需要的时候知道怎么去找方法、或知道怎么问人也许就够了)。
那么,在Power Query里,怎么实现从POST类网页上抓取数据呢?记得以下三个必要的内容:
Request URL:请求链接。这个不用说了,没有链接怎么可能拿数据?
Content-Type:返回内容的类型。大概可以这么理解,既然post类方法用于复杂的数据查询,那返回的内容可能往往也是比较复杂的,那么应该告诉别人,用什么样的方式给你数据。
Form Data:表单数据。就是查询的条件(参数)啦。
有点儿复杂是不是?这些东西从哪里来?其实很简单,Chrome里通过“检查”功能都可以轻松得到这些信息:
甚至点击“View Source”后还可以直接看到这些参数最终传递的时候是什么样的:
有了这3项内容,在Power Query里就可以实现数据的抓取了。
其中,前2项可以直接复制粘贴到相应的框里,只是参数需要通过Text.ToBinary转换为二进制内容然后手动输入到Content参数里(视频无声音,公共场合也可以放心播放):
就这样,轻松搞定简单的POST类请求的网页数据抓取。
【近期热门合集/文章】