有学员想爬这个网站,想用powerquery实现:
http://www.xinfadi.com.cn/priceDetail.html
但是发现它跟其他网址不太一样,因为翻页的时候地址栏还是一样的地址。
遇到这种情况该怎么办呢?
今天教你一招来搞定,此方法适用于很多网站,并且也是一项网爬的基本技能。
之前学谦写过一篇类似的文章,不过当时的具体情况是每次get请求的地址中带着页码,所以直接写一个参数页码来调用即可:
这个网站用PowerBI、PowerQuery不好爬?这一招交给你
【如果对于以下浏览器操作不熟悉,请先仔细阅读以上文章详细介绍】
但是今天遇到的这个网页,按照同样的方法获取请求时,发现有两点不同:
1、多次查询,请求URL是相同的
2、这个不是get请求,而是post请求
针对此两点不同,应该如何实现获取数据,此文做一个介绍。
如果遇到请求URI相同,就一定代表着请求主体(body或payload负载)不同,因此我们找到请求主体页面,发现里面是带着一些参数的链接,那么这一部分就要放在提交请求里的主体内。
在powerquery中,就需要加这么一行:
body = "limit=20¤t=1&pubDateStartTime=2024/10/08&pubDateEndTime=2024/10/31&prodPcatid=&prodCatid=&prodName=",
另一点,请求方式是post,如果使用python,需要将之前的get变为post即可:
但是如果使用powerquery,需要注意加上一个请求头的参数“Headers”,因为我们在之前的文章中使用get请求没有提到这一点,即:
Headers = [#"Content-Type" = "application/x-www-form-urlencoded"]
将代码放入powerquery高级编辑器即可:
后半部分就是正常的使用powerquery的基本界面操作来展开整理获取的数据,大家都很熟悉了。
同时,想要获取所有页面或者所有日期的值,只需要将time和limit进行参数化即可实现,不再赘述。
本文分享自 PowerBI生命管理大师学谦 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!