phantomJS和selenium怎样爬取ajax跨域请求的网页
谢邀。题主可以使用casperjs,也是基于phantomjs的一个工具,封装了许多方法,优化了语法糖。在casperjs中有很多方法处理异步问题,比如:waitForSelector(\u0026#39;#btn\u0026#39;,callback)这个方法就是等到id为\u0026#39;btn\u0026#39;的元素渲染后触发回调。类似的方法还有很多,题主可以参考casperjs文档:The casper modulecasperjs的github仓库:n1k0/casperjs · GitHub
■网友
首先谢邀~第一次被邀请还有点小激动呢~1、通过你的描述和2里返回的内容,基本可以确认是JSONP方式请求的。2、JSONP可以通过network查看JS找到,可以把获取到的内容进行反混淆解密,试试看是不是混淆加密的,具体地址百度很多就不放了。3、因为没用过phantomJS和selenium,所以特地百度了一下,发现一个是类似NODEJS的服务器端测试工具,一个是浏览器插件型的客户端工具,不过百度phantomJS+selenium也可以查到结合使用的例子。一开始我猜测会不会是phantomJS只能抓取到初始代码,对异步后的操作无力,后来想想很多人需要使用的工具应该不会像IE这么丑陋,于是换成以下两种猜测:一、网站JS不兼容WebKit内核导致JS异步遇到异常不能执行,虽然可能性很小。二、异步有延迟,selenium操作的时机不对,这个可能性也很小,因为看你好像也手动用过。所以~如果你非要用phantomJS和selenium,我也帮不上什么~如果你主要目的是抓取内容,建议你还是试试解密返回的内容吧~
■网友
直接用内置的方法请求解析即可:ex: JSON.parse( __utils__.sendAJAX(url, \u0026#39;GET\u0026#39;, {} , false ) );
■网友
我貌似也遇到了相同的问题,不知楼主问题解决了么?如果已解决能指导下么?
■网友
Selenium+PhantomJS提供了页面等待机制包括显式等待,等待某一条件成立,大多情况下是等待某一元素出现。还有隐式等待,直接等待某一段时间。详情查看:Python爬虫利器四之Selenium的用法
■网友casper.start(\u0026#39;http://yoursite.tld/\u0026#39;, function() { this.wait(1000, function() { this.echo("I\u0026#39;ve waited for a second."); });});casper.run();等一下咯;截图:casper.start(\u0026#39;http://www.google.fr/\u0026#39;, function() { this.capture(\u0026#39;google.png\u0026#39;, { top: 100, left: 100, width: 500, height: 400 });});
■网友
你要在页面加载后,等待一段时间,比如5秒钟,因为异步请求的内容的加载需要时间
推荐阅读
- 聪明人养花,这3种“花”怎样也要养一盆,每年能省不少医药费
- 互联网怎样解决“家政服务上门速度慢”的问题
- 怎样看待从1月8号起,QQ钱包开始提现收费
- 银行it人怎样转型
- 汽车|冬天怎样让车内温度快速升高?座椅加热的最佳使用方式二,外循环的作用总结
- 怎样进入通信行业
- 怎样评价扶他柠檬茶的小说《云养汉》的结尾
- 怎样成为一名合格的Python程序员?
- 怎样评价华为、诺基亚、中兴中标中国移动高端路由交换设备扩容集采
- 怎样评价类似前橙会、百老汇、南极圈这样类型的离职帮抱团,对企业的积极意义和消极意义
