如何快速爬取网页上用ajax加载但需要appid/appkey才能授权拿到内容?

首先声明,这是非商业目的、纯个人兴趣的学习。python新手,问题如果幼稚请见谅。
我想爬的这个网页,是用ajax动态加载,发送post请求到第三方后台(SaaS),验证后以json格式返回内容,然后显示在网页上。因为缺少appid/appkey,我无法直接用requests库发送post请求拿到内容,直接抓取的结果是"Unauthorized"。Appid/Appkey我肯定是拿不到了,这是不是就是说通过requests请求这条路行不通了?<<<修改:这里的假设是错误的囧,具体详见回答。有ajax的网页,还是用requests直接请求数据源最快。
另外,我试过用selenium模拟浏览器直接加载页面,但是要等页面加载完所有ajax基本上需要个十来秒,效率极为低下。而且这是一个single-page的条目页面,每页显示20条信息,点击“下一页”后不会跳转,而是又一次请求后台刷新内容,因此只能单线程的加载->等10秒->拿内容->点下一页->加载->等10秒……
想知道有没有什么比较快速的方法爬到想要的数据呢?
ibeautiful
浏览 299回答 2
2回答

临摹微笑

[自问自答]我后来发现了,用chromedevtool其实可以看到页面本身请求数据时发送的appid/appkey,不过不是以这样的paramname呈现出来,所以一开始被我忽视了。实际上只要把这两个键值对加进header里,并加上chrome里看得到的payload信息,用requests发送POST请求,就可以直接调取数据库信息了。

梵蒂冈之花

一般来讲,selenium跟requests的最大区别就是帮你解析并执行html,css,js等(耗时长)。其中解析js是你最希望的,如果你可以手动解析js填上Appid/Appkey,完全可以用requests完成。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript