感谢大神帮助,还有两点需请教:
1、我想把Url的……p=#{0}……,直接改成:……p=_……,这样可以直接 ...
原来没有老老实实写过PQ的网抓的操作步,这次就和你一起复习一下。我把参数逐个试了个遍,最后精简成这样:
- let
Scrape = (pg as number) =>
let
url = "http://dcfm.eastmoney.com/em_mutisvcexpandinterface/api/js/get",
qry = [type="XGSG_LB", token="70f12f2f4f091e459a279469fe49eca5", st="purchasedate,securitycode", sr="-1", p=Text.From(pg), ps="50"],
web = Table.FromRecords(Json.Document(Text.FromBinary(Web.Contents(url, [Query=qry]))))
in
web,
Source = Table.Combine(List.Transform({1..50}, each Scrape(_)))
in
Source
复制代码
先说第2点,从浏览器的抓包来看,每个页面都是GET请求,所以这两种写法等效:
- Web.Contents("http://xxx.xx.xxx/get?kw1=aa&kw2=bb&kw3=cc")
Web.Contexts("http://xxxx.xx.xxx/get", [Query=[kw1="aa", kw2="bb", kw3="cc"]]
复制代码 我耐着性子把Query和Headers里的参数试了个遍,貌似st是用来排序的,sr不详但还是得要,p是当前页数,ps是每页显示数量;其他的参数都省略了,好像没什么影响。
你提到的第1点行不通,因为那样没办法把“第x页”作为参数传递进去;这里要对@deadzlq老师表达一下敬佩之情,原来从没留意过Text.Format(Url,{_})的语法,今天总算看到实际的用法了!
10870111524504.rar
(1 MB, 下载次数: 0)
|