爬虫,如何获取动态页面
发布于 8 年前 作者 ChrisFuck 12334 次浏览 来自 问答

刚开始做爬虫,在爬一个动态页面的时候如果一下子返回content,是空字符串 恩恩.png 问问.png 怎么等待它页面绘制完成呢,新手

14 回复

等待绘制完成 可以试试用 PhantomJS 或者 node-webkit来弄 还有一种思路是直接找到对应的数据接口,取代爬网页

如果状态码是200,内容是空,那个页面就是个空页面 如果302重定向,那么直接请求跳转指向的地址 如果ajax加载,那还是得找接口地址 普通爬虫应该用不上node-webkit

动态页面是指html由服务器动态生成,还是网页内容由javascript控制动态生成?

@klesh 应该是javascript

@ChrisFuck 如果是像 angularjs 之类,内容由浏览器的 js 生成,推荐 PhantomJS

@klesh 是的。它页面里的东西都是angularjs 的{{}}绑定,而且都以GB2312编码,Windows下也不能用那个iconv解码,晕了

现在只有通过phantomJS来实现了.我原来试过用selenium,它的开销更大.

@ChrisFuck 我记得 iconv-lite在win下面是可以用的。如果你是针对特定具体网站进行抓取,那还是用request库好些,开销小速度快。

来自酷炫的 CNodeMD

你有没试过splash。 开发者是开发来配合scrapy用的,但只是个渲染代理。

爬虫还是python各种东西全,更何况现在python都有async关键字了。。。

@klesh 恩,inconv-lite可以用,但是不能处理宽字节,iconv不能用

动态页面不能爬网址,建议你找一下人家的接口,我就是那么爬得。

可以试试用cheerio.load() 如果不行就老老实实按F12看timeline找对应数据接口吧

@ChrisFuck 那不能啊?怎么说不能处理的,举个实例?

回到顶部