原理见《PowerQuery爬取网页终极攻略——Power Query网络爬取详解》。施阳大神的手笔。pqfans是个好去处,有兴趣的可以多瞄瞄。
1、翻页URL会变化,直接get方式提交
URL:http://quote.stockstar.com/stock/ranklist_a_3_1_1.html
此为沪深A股数据,需要抓取1-20页的所有数据。点击下一页后观察URL发现,html前面最后一个数字即为页数,那么只需要自定义函数,将其做成变量然后调用即可。另外发现每一页的最后一行都是多余的,可以用Table.RemoveLastN删掉。
let get_data =(x)=>Table.RemoveLastN(Web.Page(Web.Contents("http://quote.stockstar.com/stock/ranklist_a_3_1_"&Text.From(x)&".html")){0}[Data],1), result = Table.Combine(List.Transform({1..20},get_data))in result
2、翻页URL不会变化,F12找出真实地址
URL:http://221.215.38.136/grcx/kscx/list.action?kscxVo.jsp=ylypmlcx.jsp
要抓取1-20页数据,但发现翻页URL不会变,无法根据URL控制页数。浏览器按F12发现,网页以get方式提交,图中参数4即为页数,表格的真实URL为http://221.215.38.136/grcx/pages/kscx/ylypmlcx.jsp?page_ylypmlcxQuery=4,于是方法同上。